python-3.x - 比较 Pandas 中的 ID 日期组合

标签 python-3.x pandas dataframe compare

我是 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 df1df2,然后用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/

相关文章:

python-3.x - 在 Python 中禁用 websockets 包的记录器

python - 在多列上使用 numpy 二维数组从 Pandas 数据框中选择行

python - 将 NaN 移到各自行的末尾

python - Pandas 有条件地合并具有重复 ID 的行,适用于 CSV

python-3.x - 混淆矩阵获得精度、召回率、f1 分数

python - Peewee Flask 尝试从 BooleanField 返回数据

Python:如何抓取 ESPN 的比赛比赛信息

python - Pandas .apply() 子函数正在更改主数据框

r - 如何通过赔率和偶数标准按位置用列表值填充两个不同的列

python - 导入错误 : cannot import name 'trace' from 'tensorflow.python.profiler'