gpt4 book ai didi

python - Pandas 数据框从长到宽转换,每个索引的行数不同

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:30 25 4
gpt4 key购买 nike

我有一个 pandas 数据框,其中包含以下格式的 session ID、URL 和时间戳:

SessionId   TimeStamp   URL
aa420858 20:24 url1
aa420858 20:26 url2
aa420858 20:27 url3
bb779bc3 18:18 other_url1
bb779bc3 18:21 other_url2
bb779bc3 18:24 other_url3
bb779bc3 18:25 other_url4
zz920853 20:27 diff_url1
zz920853 20:28 diff_url2

我需要获取以下格式:

SessionId   URL1       URL2       URL3       URL4       TimeStamp1 TimeStamp2 TimeStamp3    TimeStamp4
aa420858 url1 url2 url3 20:26 20:27 20:27
bb779bc3 other_url1 other_url2 other_url3 other_url4 18:18 18:21 18:24 18:25
zz920853 diff_url1 diff_url2 20:27 20:28

我从来不知道每个 session 的 url 数量。

我尝试使用pd.melt、pd.pivot_table、pivot()、unstack()等,但没有成功。有人可以建议最好的方法。另外,是否可以使用不同的时间戳来获取页面上的时间?

非常感谢!

最佳答案

数据透视表+ concat

df1=df.pivot_table(index='SessionId',columns=df.groupby('SessionId').cumcount(),values='TimeStamp',aggfunc='sum').\
add_prefix('TimeStamp_')

df2=df.pivot_table(index='SessionId',columns=df.groupby('SessionId').cumcount(),values='URL',aggfunc='sum').\
add_prefix('URL_')


pd.concat([df2,df1],1).reset_index()
Out[209]:
SessionId URL_0 URL_1 URL_2 URL_3 TimeStamp_0 \
0 aa420858 url1 url2 url3 None 20:24
1 bb779bc3 other_url1 other_url2 other_url3 other_url4 18:18
2 zz920853 diff_url1 diff_url2 None None 20:27
TimeStamp_1 TimeStamp_2 TimeStamp_3
0 20:26 20:27 None
1 18:21 18:24 18:25
2 20:28 None None

附言。如果你需要 1 的 Id...你可以在 df.groupby('SessionId').cumcount().add(1).add(1) 中添加/p>

时间差

df['DIFF']=df.groupby('SessionId').TimeStamp.apply(lambda x :pd.to_datetime(x).diff().dt.total_seconds() / 60)

df3=df.dropna()
df3.pivot_table(index='SessionId',columns=df3.groupby('SessionId').cumcount(),values='DIFF',aggfunc='sum').add_prefix('diff')
Out[241]:
diff0 diff1 diff2
SessionId
aa420858 2.0 1.0 NaN
bb779bc3 3.0 3.0 1.0
zz920853 1.0 NaN NaN

关于python - Pandas 数据框从长到宽转换,每个索引的行数不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47518628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com