2015-05-22 75 views
0

我有两个数据帧。 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分,15分给埃德,并且是提高人们回答你未来问题的可能性的好方法。 ;-) – JohnE

回答

2

一种方法是合并在“值”列,因此这将只生产匹配的行,那么你可以过滤合并后的DF使用“dt_x”,“dt_y”列:

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: Series lengths must match to compare

+0

谢谢!这正是我所期待的 – NinjaGaiden