Dataframe根据数据框中的日期加入列

时间:2018-01-05 14:30:53

标签: python pandas dataframe

我尝试搜索答案,但大多数是基于合并2个数据帧,但是我的数据集存在于单个数据帧中

D1date     D1price  D2date     D2price
1/2/2017   11.4     1/3/2017   11.3
1/3/2017   12.4     1/4/2017   12.3
1/4/2017   14.4     1/5/2017   12.4
1/5/2017   15.5     1/6/2017   12.5

结果我正在寻找

D1date     D1price   D2price
1/2/2017   11.4      nan
1/3/2017   12.4      11.3
1/4/2017   14.4      12.3
1/5/2017   15.5      12.4

任何善良的灵魂都可以告诉我吗?

2 个答案:

答案 0 :(得分:1)

使用filter + join

df = df.filter(like='D1').join(df.filter(like='D2').set_index('D2date'), on='D1date')
print (df)
     D1date  D1price  D2price
0  1/2/2017     11.4      NaN
1  1/3/2017     12.4     11.3
2  1/4/2017     14.4     12.3
3  1/5/2017     15.5     12.4

答案 1 :(得分:1)

你试过这样的事吗:

df[['D1date', 'D1price']].merge(df[['D2date', 'D2price']], how='left', left_on='D1date', right_on='D2date')

您可以添加:

.drop('D2date', axis=1)

删除D2date列。 完整代码:

df = df[['D1date', 'D1price']].merge(df[['D2date', 'D2price']], how='left', left_on='D1date', right_on='D2date').drop('D2date', axis=1)