Pandas:使用2个数据帧进行标记的更有效方法?

问题描述 投票:0回答:1

我有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,需要几个小时。

是否有更有效的方法来进行这种标记?

python pandas dataframe
1个回答
0
投票

您可以尝试将第二个'if'语句的对象作为Pandas系列或列表进行管理,如果满足条件,则可以在数据集上执行标签。

© www.soinside.com 2019 - 2024. All rights reserved.