Pandas,按唯一用户和分析结果分组

发布于 2025-01-10 14:19:54 字数 477 浏览 0 评论 0原文

我有一些赌博交易(下面的小样本)。我希望能够对每个唯一用户的交易进行分组,同时还可以确定每个用户的成功。

import pandas as pd
    
d = {'user_id': [1234, 5830, 3943, 1234, 5032, 5830,1234 ], 'win': [1, 0, 1, 0, 0, 1, 1],}
    
df= pd.DataFrame(data=d)
df

我可以对用户 ID 进行分组并计数以查看每次发生的次数,但不执行第二部分 - 确定每个用户的成功,希望看到实际的赢/输以及每个用户的比率。

group =  df.groupby('user_id')['user_id'].count()
print(group)

所以我的输出将是 aa df 与这些列 '用户', 'Total_wins', 'Total_losses','win_loss_ratio'

I have a df of gambling transactions (small sample below). I want to be able to group the transactions of each unique user, but also to determine each user's success.

import pandas as pd
    
d = {'user_id': [1234, 5830, 3943, 1234, 5032, 5830,1234 ], 'win': [1, 0, 1, 0, 0, 1, 1],}
    
df= pd.DataFrame(data=d)
df

I can group the user id's and count to see how many times each occurs, but not do the second part- determine success for each user, would like to see win/loss in real terms and as a ratio for each user.

group =  df.groupby('user_id')['user_id'].count()
print(group)

So my output would a a df with these columns
'User', 'Total_wins', 'Total_losses','win_loss_ratio'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤君无依 2025-01-17 14:19:54

使用 GroupBy。 agg 用于计数 1sum,用于计数 0 lambda 函数和用于 ratio 使用意思

df=(df.groupby('user_id',as_index=False).agg(Total_wins=('win','sum'),
                                             Total_losses=('win', lambda x: x.eq(0).sum()),
                                             win_loss_ratio=('win','mean')))
print (df)
   user_id  Total_wins  Total_losses  win_loss_ratio
0     1234           2             1        0.666667
1     3943           1             0        1.000000
2     5032           0             1        0.000000
3     5830           1             1        0.500000

Use GroupBy.agg for count 1 with sum, for count 0 lambda function and for ratio use mean:

df=(df.groupby('user_id',as_index=False).agg(Total_wins=('win','sum'),
                                             Total_losses=('win', lambda x: x.eq(0).sum()),
                                             win_loss_ratio=('win','mean')))
print (df)
   user_id  Total_wins  Total_losses  win_loss_ratio
0     1234           2             1        0.666667
1     3943           1             0        1.000000
2     5032           0             1        0.000000
3     5830           1             1        0.500000
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文