如何基于日期差异比较两个数据帧

时间:2019-11-03 21:41:50

标签: python-3.x pandas

我有两个数据框,每个数据框都有#id列和date列, 我想在两个数据框中找到具有相同ID,且日期差超过2天的行

1 个答案:

答案 0 :(得分:0)

通常包含一个datafrme很有帮助,这样响应者就不需要创建它了。 :)

import pandas as pd
from datetime import timedelta

创建两个数据框:

df1 = pd.DataFrame(data={"id":[0,1,2,3,4], "date":["2019-01-01","2019-01-03","2019-01-05","2019-01-07","2019-01-09"]})
df1["date"] = pd.to_datetime(df1["date"])

df2 = pd.DataFrame(data={"id":[0,1,2,8,4], "date":["2019-01-02","2019-01-06","2019-01-09","2019-01-07","2019-01-10"]})
df2["date"] = pd.to_datetime(df2["date"])

它们将如下所示:

DF1

   id       date
0   0 2019-01-01
1   1 2019-01-03
2   2 2019-01-05
3   3 2019-01-07
4   4 2019-01-09

DF2

   id       date
0   0 2019-01-02
1   1 2019-01-06
2   2 2019-01-09
3   8 2019-01-07
4   4 2019-01-10

合并“ id”列上的两个数据框:

df_result = df1.merge(df2, on="id")

结果:

   id     date_x     date_y
0   0 2019-01-01 2019-01-02
1   1 2019-01-03 2019-01-06
2   2 2019-01-05 2019-01-09
3   4 2019-01-09 2019-01-10

然后减去两天的列,并过滤两个以上的列。

df_result[(df_result["date_y"] - df_result["date_x"]) > timedelta(days=2)]

   id     date_x     date_y
1   1 2019-01-03 2019-01-06
2   2 2019-01-05 2019-01-09