【发布时间】:2019-12-30 01:59:26
【问题描述】:
我有 2 个数据框,其中包含 user_id 属于特定用户的用户活动。我需要根据某些条件在第二个数据帧上填充一个新列。这是一个例子
df1 是一个包含 user_id 和 date1 列的数据框
user_id date1
1 2019-07-01
2 2019-08-04
1 2019-08-06
3 2019-09-03
df2 是另一个以 user_id 和 date2 为列的数据框
user_id date2
1 2019-07-02
1 2019-07-03
2 2019-08-03
3 2019-08-04
两个数据帧都有不同的行数,对于每个用户,两个数据帧中都存在多行。
对于 df2 中的每一行,“Present_df1”列需要根据 df1 中 user_id 的相等性和日期之间的不等式条件来填充,比如 date2>date1
所以对于df2中的每一行,如果user_id和date2>date1的组合满足,我们可以把它设为1。
尝试了以下方法,但似乎不起作用:
(df2.user_id.isin(df1.user_id) & df2.date2>df1.date1).astype(int)
我来自 SQL 背景,在那里它似乎更容易可视化,但在 pandas 中我发现它很难概念化。合并选项产生一个大的笛卡尔积,所以不是一个好的思考方法
【问题讨论】:
标签: python-3.x pandas date join