熊猫
我有两个数据框,想做一个嵌套循环。
我要迭代df1的每一行,然后选择col1(id)和col2。
然后,它将获取ID并遍历df2,检查该行是否具有相同的ID,然后将df1中的日期列与df2中的日期列进行比较
如果df1中的col2小于df2中的col2,则它将返回True并将其附加到df1的行中。
基本上我想做的是,或者,如果有更快的方法,
for(row : df1){
for(row : df2){
if (df1.row[col1] == df2.row[col1]){
if(df1.row[col2] < df2.row[col2])
return df1.row[col3] == True
else
row[col3] == False
df1
col1 col2 col3 col4
01 01/01/2018 S True
02 11/21/2018 F False
03 04/03/2018 C True
df2
col1 col2 col3
01 10/01/2018 A
02 01/01/2018 A
02 01/31/2018 F
02 10/01/2018 D
02 09/01/2018 V
03 02/01/2018 W
03 07/01/2018 X
答案 0 :(得分:0)
pandas.merge_asof
首先,要使merge_asof
工作,您需要按日期排序
df1.sort_values(['col2', 'col1'], inplace=True)
df2.sort_values(['col2', 'col1'], inplace=True)
现在我们可以合并
pd.merge_asof(
df1, df2.rename(columns={'col3': 'col4'}),
on='col2', by='col1', direction='forward'
).assign(col4=lambda d: d.col4.notna())
col1 col2 col3 col4
0 1 2018-01-01 S True
1 3 2018-04-03 C True
2 2 2018-11-21 F False