我有2个数据框。
数据框1
Userid | SessionID | Endtime
John | '' | 0910
Paul | '' | 0920
.....
数据框2
UserID| SessionID | starttime|end time
John | 0 | 0905 | 0915
Jack | 1 | 0900 | 0915
....
数据帧1具有333975行。数据框2具有2460行。
我想参考数据帧1标记数据帧2。匹配的条件是,如果日期帧1中的用户=用户数据帧2,并且如果“结束时间”介于“开始时间”和“结束时间”之间,则将SessionID从数据帧1复制到数据框2。
我的代码是这样的:
For i in range(len(df1)) :
For j in range(len(df2)) :
if(df1['Userid'][1] == df2['UserID']) :
if((df1['Endtime'] [i] > df2['starttime'][j]) & (df1['Endtime'] [i] < df2['end time'][j])
df1['SessionID' ][i] = df2['SessionID'][j] =
[以前,当我处理65k的d1时,需要30分钟才能完成。现在只有333k,需要几个小时。
是否有更有效的方法来进行这种标记?
您可以尝试将第二个'if'语句的对象作为Pandas系列或列表进行管理,如果满足条件,则可以在数据集上执行标签。