我是Pandas的完整入门者,想知道如何比较一个数据帧中的行对组合与另一个数据帧。
我有df:
id dates
0 A 2000-01-01
1 B 2000-01-02
2 C 2000-01-03
,并想与df2进行比较:
id dates
0 A 2000-01-01
1 B 2000-01-03
2 C 2000-01-01
3 D 2000-01-04
4 E 2000-01-05
对于df2中的每个特定ID,它会将对应的日期与df1比较(并告诉我df1中的日期是否开启或晚于df2中的日期)
所以我应该得到:
id dates later
0 A 2000-01-01 1
1 B 2000-01-02 0
2 C 2000-01-03 1
对此有什么好的思考方式?
谢谢!
答案 0 :(得分:3)
方法1::您可以使用Series.map
根据df2
将日期从df1
映射到id
,然后使用{{ 1}}比较相应的日期:
Series.ge
方法2:将数据框df1['later'] = df1['dates'].ge(df1['id'].map(df2.set_index('id')['dates'])).view('i1')
与df1
左合并,然后使用df2
比较相应的日期:
Series.ge
df = df1.merge(df2, on='id', suffixes=['', '_r'], how='left')
df['later'] = df['dates'].ge(df.pop('dates_r')).view('i1')
答案 1 :(得分:2)
您可以在<h1>@_config["Company:Name"]</h1>
上使用pd.merge()
来比较id
列,并通过传递dates
来获得两个max
列中的date
。这将返回axis=1
或True
。然后,您可以执行False
分别从astype(int)
和True
更改为False
和1
:
0