仅在特定日期之前按熊猫分组保留行

时间:2019-08-14 21:57:17

标签: python pandas group-by

我有两个DataFrame:一个具有每个id的所有loan_iddateloan_id值,另一个具有一个随机的date值每id

df1

id     date    loan_id
1     201301     100
1     201301     200
1     201302     100
1     201302     200  
1     201303     100
1     201304     100
2     201402     100
2     201403     100
2     201404     100
2     201405     100

df2

id     date
1     201303  
2     201403

我要实现的是创建一个在id中指定日期之前具有df2的所有值的DataFrame,如下所示:

id     date    loan_id
1     201301     100
1     201301     200
1     201302     100
1     201302     200  
1     201303     100
2     201402     100
2     201403     100

我猜测使用groupby('id')和其他方法我可以实现它,但是我找不到“其他”。我可以创建一个虚拟变量,按组回填并删除其余的变量,但是效率在此问题中非常重要。您知道更有效的方法吗?谢谢。

编辑:添加了以下事实:对于同一id,同一日期可以出现两次(或多次)。

1 个答案:

答案 0 :(得分:2)

IIUC,将索引设置为相同,并使用le

df[df.set_index('id').date.le(df2.set_index('id').date).values]

   id    date
0   1  201301
1   1  201302
2   1  201303
4   2  201402
5   2  201403