我有两个数据帧。 df1和df2。 我想得到df1和df2中常见的任何值,df2的dt值必须大于df1的dt值 在这种情况下,预期值是费用
df1 = pd.DataFrame([['2015-01-01 06:00','foo'],
['2015-01-01 07:00','fee'], ['2015-01-01 08:00','fum']],
columns=['dt', 'value'])
df1.dt=pd.to_datetime(df1.dt)
df2=pd.DataFrame([['2015-01-01 06:10','zoo'],
['2015-01-01 07:10','fee'],['2015-01-01 08:10','feu'],
['2015-01-01 09:10','boo']], columns=['dt', 'value'])
df2.dt=pd.to_datetime(df2.dt)
答案 0 :(得分:2)
一种方法是合并'value'列,这样只产生匹配的行,然后你可以使用'dt_x','dt_y'列过滤合并的df:
In [15]:
merged = df2.merge(df1, on='value')
merged[merged['dt_x'] > merged['dt_y']]
Out[15]:
dt_x value dt_y
0 2015-01-01 07:10:00 fee 2015-01-01 07:00:00
由于长度不匹配,您无法执行以下操作:
df2[ (df2['value'].isin(df1['value'])) & (df2['dt'] > df1['dt']) ]
提出:
ValueError:系列长度必须匹配才能比较