我有两个DataFrame:一个具有每个id
的所有loan_id
,date
和loan_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
,同一日期可以出现两次(或多次)。
答案 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