【发布时间】:2020-06-04 05:18:31
【问题描述】:
我正在尝试获取最新的当前数据视图。我在 Pandas 数据框中有传入的新数据,我需要将其与现有数据的另一个数据框合并。我有一个包含关键列的列表(以匹配两个数据帧之间的行)。
我需要一个结果数据帧,其中包含每个数据帧中不存在于另一个数据帧中的所有行(基于键)。但是,当密钥在两个数据帧中时,我需要比较“trantime”列以查看哪个是最新的并使用该行。
设置如下:
import pandas as pd
from datetime import datetime, timedelta
# Use this list of columns to join the 2 dataframes.
key_columns = ['col1','col2']
time = datetime.now()
existing_df = pd.DataFrame(dict(
col1=[0,1,1,2],
col2=['a','b','c','b'],
attr1=['this','is','just','something'],
trantime=[
time - timedelta(days=1),
time,
time - timedelta(days=2),
time - timedelta(days=3)
]
))
new_df = pd.DataFrame(dict(
col1=[1,2,2],
col2=['b','b','c'],
attr1=['plus','more','stuff'],
trantime=[
time - timedelta(days=1),
time,
time]
))
# How do I get this:
expected_output_df = pd.DataFrame(dict(
col1=[0,1,1,2,2],
col2=['a','b','c','b','c'],
attr1=['this','is','just','more','stuff'],
trantime=[
time - timedelta(days=1),
time,
time - timedelta(days=2),
time,
time
]
))
我尝试使用 isin(),但我无法让它与多个列一起工作。我假设我也会使用 concat() 。我曾尝试使用 merge(),但这会在结果数据框中创建带有“_x”/“_y”后缀的列。
有人可以帮忙吗?提前感谢您的宝贵时间!
【问题讨论】:
标签: pandas