python - 使用 python 处理数据的复杂要求
问题描述
这是我的原始文本字段
Area Brand Points
USA Nike 86
USA Addidas 85
USA Speedo 84
USA Nike 83
USA Speedo 82
USA Nike 81
Japan Nike 84
Japan Nike 85
Japan Nike 86
Japan Addidas 82
Japan Addidas 80
Japan Addidas 86
Japan Speedo 84
Japan Speedo 82
对于 Area 列,它只显示唯一值 对于 Brand 列,它会显示高频值 对于 Points 列,它只显示 mean() 结果
因此,它应该与以下相同。
Area | ModBrand | AvePoints
USA | NIKE | MEAN NUMBER
Japan | [NIKE, Addidas] | MEAN NUMBER
我知道我可以对区域使用 groupby 函数,对点使用均值
data = data.groupby(['Area']).mean().reset_index()
但是对于品牌列。你能给我一些建议吗?
谢谢
解决方案
你可以pd.Series.mode
这样使用:
df.groupby('Area').agg({'Brand': lambda x: x.mode().values.tolist(), 'Points': 'mean'})
给出:
Brand Points
Area
Japan [Addidas, Nike] 83.625
USA [Nike] 83.500
推荐阅读
- python - 如何在熊猫中将多行合并为一行
- r - 一次在分组数据帧 n 行上应用自定义函数
- kubernetes - 错误:找不到秘密“被动接口”
- java - 在 ant 中为 JavaFX 自包含应用程序设置运行时环境变量
- c# - Discord.NET c#获取特定用户的角色
- apache-kafka - 获取正在运行的 Kafka 集群上的所有属性?
- kotlin - 类内通用递归函数的 Kotlin 类型不匹配
- asp.net-core - EF Core Data 注释必须大于其他字段
- python - Python 文件未读取文本文件的内容
- php - Laravel-echo-server 没有连接客户端到服务器