繁体   English   中英

熊猫将两个数据框与条件进行比较

[英]pandas compare two dataframes with criteria

我有两个数据框。 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)

一种方法是在“值”列上合并,这样将只生成匹配的行,然后可以使用“ 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:系列长度必须匹配才能进行比较

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM