Python 合并帧以便只保留具有相同日期的行
我想合并df1和df2,因此我只剩下一个基于df1列的“高”价格的df。我认为最好的方法是使用df1?中的“日期”列?。我们的目标是将“df1 high”与“df2 datetime”排成一行,这样我就可以看到当天的高点是在什么时候达到的。所以我应该得到一个df,df1第0行和df2第51行。 这就是我试过的-Python 合并帧以便只保留具有相同日期的行,python,pandas,merge,Python,Pandas,Merge,我想合并df1和df2,因此我只剩下一个基于df1列的“高”价格的df。我认为最好的方法是使用df1?中的“日期”列?。我们的目标是将“df1 high”与“df2 datetime”排成一行,这样我就可以看到当天的高点是在什么时候达到的。所以我应该得到一个df,df1第0行和df2第51行。 这就是我试过的- df21 = pd.merge(df1, df2, on='date', how='right')#no good df22 = pd.merge(df1, df2, on='date'
df21 = pd.merge(df1, df2, on='date', how='right')#no good
df22 = pd.merge(df1, df2, on='date', how='left')#returns nothing
df23 = pd.merge(df1, df2, on='date', how='inner')#returns nothing
df26 = pd.merge(df1, df2, right_index=True, left_index=True)#returns nothing
df29 = pd.merge(df1, df2, left_on='date', right_on='date')#returns nothing
df30 = pd.merge(df1, df2, right_index=True, left_index=True)#returns nothing
我有以下df1
date open high low close
0 2017-07-19 30.75 30.84 30.23 30.38
1 2017-07-20 30.44 30.97 29.90 30.52
2 2017-07-21 30.40 31.48 30.30 31.12
3 2017-07-22 31.89 31.98 31.11 31.49
4 2017-07-25 31.85 31.85 29.62 29.78
我有df2
datetime close high low open OI V WAP \
49 2017-07-19 10:19:00 30.62 30.70 30.60 30.69 91 196 30.654
50 2017-07-19 10:20:00 30.68 30.73 30.64 30.64 135 281 30.699
51 2017-07-19 10:21:00 30.71 30.84 30.69 30.69 383 1156 30.768
52 2017-07-19 10:22:00 30.73 30.74 30.69 30.70 40 88 30.710
53 2017-07-19 10:23:00 30.79 30.83 30.74 30.74 165 313 30.796
date time
49 2017-07-19 10:19:00
50 2017-07-19 10:20:00
51 2017-07-19 10:21:00
52 2017-07-19 10:22:00
53 2017-07-19 10:23:00
您需要在两个键上合并
left\u on=['date','high']
,right\u on=['date','high']
In [709]: df1.merge(df2, left_on=['date', 'high'], right_on=['date', 'high'])
Out[709]:
date open_x high low_x close_x datetime close_y \
0 2017-07-19 30.75 30.84 30.23 30.38 2017-07-19 10:21:00 30.71
low_y open_y OI V WAP time
0 30.69 30.69 383 1156 30.768 10:21:00
然后,根据需要删除或重命名列。我怀念以前的John Galt用户名:-(谢谢-我没有意识到你可以合并两列,而且我还有不同类型的date。