python - 根据另一列对值进行分组并将这些值相加

标签 python pandas pandas-groupby

我目前正在对模拟 MMORPG 的微交易数据进行模拟分析。这是 CSV 文件的几行示例:

PID Username    Age Gender ItemID   Item Name   Price

0   Jack78      20  Male    108    Spikelord    3.53
1   Aisovyak    40  Male    143  Blood Scimitar 1.56
2   Glue42      24  Male    92   Final Critic   4.88

这就是事情变得危险的地方 - 我成功地使用 groupby 函数获得了按购买者性别对购买进行分组的结果。

test = purchase_data.groupby(['Gender', "Username"])["Price"].mean().reset_index()

得到结果(为了可读性而被截断)

                    Gender        Username  Price
0                   Female     Adastirin33  $4.48
1                   Female   Aerithllora36  $4.32
2                   Female      Aethedru70  $3.54
...
29                  Female        Heudai45  $3.47
..                     ...             ...    ...
546                   Male        Yadanu52  $2.38
547                   Male      Yadaphos40  $2.68
548                   Male         Yalae81  $3.34

我目前的目标是找到每个性别作为一个整体的平均花费金额。我想象如何通过创建一种检查男性的方法来实现这一点/female/other 标签位于用户名前面,然后将该人的平均支出添加到运行总计中,然后我可以稍后对其进行操作。不幸的是,我对 Python 还很陌生——我不知道从哪里开始,也不知道我是否走在正确的轨道上。

附录:jezrael 误解了这个问题的意图。虽然他为我提供了一种清理输出系列的方法,但他没有为我提供了一种方法,甚至没有为我提供实现我的主要目标的提示,即按性别将花费的钱分组在一起 (除了我的第一个片段之外,所有片段中都显示了女性,但 csv 文件的下方还有男性,我不想用太多意大利面堵塞页面)并将它们放入单个变量中。

附录2:jezrael建议的另一个解决方案,

purchase_data.groupby(['Gender'])["Price"].sum().reset_index()

创建

                  Gender     Price
0                 Female   $361.94
1                   Male $1,967.64
2  Other / Non-Disclosed    $50.19

遗憾的是,使用这个新系列的数据(这将产生此 csv 中记录的每次购买的平均价格)并不是我想要的,因为某些用户已经购买了文件中的多个项目。我正在寻找一种解决方案,让我可以从测试框架中提取每个用户的平均花费金额,并按性别分开和分组。

最佳答案

在我看来,这就像您在数据库表方面的思考。默认情况下,groupby() 不返回一个 - 组标签不显示为列,而是显示为行索引。但你可以用这种方式来做:(注意 groupby()as_index 参数)

mean = purchase_data.groupby(['Gender', "SN"], as_index=False).mean()
gender = mean.groupby(['Gender'], as_index=False).mean()

那么你想要的可能是gender[['Gender','Price']]

关于python - 根据另一列对值进行分组并将这些值相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52331326/

相关文章:

Python- Pandas : AttributeError: 'numpy.ndarray' object has no attribute 'start'

python - Pandas 不可散列类型 : 'list' when using describe()

python - Groupby 值对数据框 pandas 的计数

python - 从 Python pandas 中的空间数据创建 bin - 可能使用 groupby、diff 和 cut?

python - Pandas 插值按组添加行,每组具有不同的范围

python - PuLP如何根据之前的结果设置下一个变量?

Python 面向对象设计;返回、设置实例变量或两者

python - python脚本中的ffmpeg

python - keras中一维卷积网络的输入维度

python - 我有一个包含值的数据框并将其设置为 Excel 中的范围,如何隐藏索引?