我是 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
考虑这个问题的好方法是什么?
谢谢!
最佳答案
方法1:您可以使用Series.map
将日期从df2
映射到df1
,基于id
,然后使用 Series.ge
比较相应的日期:
df1['later'] = df1['dates'].ge(df1['id'].map(df2.set_index('id')['dates'])).view('i1')
方法二:左合并dataframe 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')
id dates later
0 A 2000-01-01 1
1 B 2000-01-02 0
2 C 2000-01-03 1
关于python-3.x - 比较 Pandas 中的 ID 日期组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63879960/