gpt4 book ai didi

python - pandas groupby 并聚合两列以获得各自的总数,然后计算比率 - 总结摘要

转载 作者:行者123 更新时间:2023-12-01 09:27:35 24 4
gpt4 key购买 nike

我有以下数据

user_id   session_id    youtube_id 
1 1 2342
1 1 3523
1 2 3325
2 1 3423
2 1 2352
2 1 3333
2 2 2351
2 2 9876
2 3 2388

目标是按user_id分组并计算每个用户的total_sessionstotal_views,从而计算每个 session 的平均观看次数.

user_id, total_sessions, total_views, average_view_per_session
1, 2, 3, 1.5
2, 3, 6, 2

result_df['avg'] = df.groupby('user_id').agg({
'session_id':lambda x : x.nunique(),
'youtube_id': 'count'}).apply(lambda x : x['total_views']/x['total_sessions']

上述两个问题:

  1. 结果列仍命名为 session_idyoutube_id,尽管它们是聚合
  2. 如何进行除法来得到average_view_per_session

上述方法给出了一个关键错误,这可能是由于对聚合列使用原始列名造成的。

最佳答案

由于它们相互依赖,我们可以在应用 .agg() 之后将其添加到单独的代码行中。

这个怎么样(完整示例)

import pandas as pd

data = '''\
user_id session_id youtube_id
1 1 2342
1 1 3523
1 2 3325
2 1 3423
2 1 2352
2 1 3333
2 2 2351
2 2 9876
2 3 2388'''

df = pd.read_csv(pd.compat.StringIO(data), sep='\s+')

df = df.groupby('user_id').agg({'session_id': 'nunique', 'youtube_id': 'count'})
df.columns = ['total sessions','total views']

df['average view per session'] = df['total views']/df['total sessions']

print(df)

返回:

         total sessions  total views  average view per session
user_id
1 2 3 1.5
2 3 6 2.0

关于python - pandas groupby 并聚合两列以获得各自的总数,然后计算比率 - 总结摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50243181/

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