python - 为什么我的 groupby 为“产品”列返回不正确的值?
问题描述
我试图将每个用户支付的最高价格以及购买的产品放入数据帧中。当我运行下面的代码时,它返回的正是我所期望的,但“产品”列不正确。
原始数据:
df = pd.DataFrame([[123,'xt23',20],
[123,'q45',2],
[123,'a89',25],
[77,'q45',3],
[77,'a89',30],
[92,'xt23',24],
[92,'m33',60],
[92,'a89',28]], columns=['userid','product','price'])
df
生成这个原始数据帧:
userid product price
0 123 xt23 20
1 123 q45 2
2 123 a89 25
3 77 q45 3
4 77 a89 30
5 92 xt23 24
6 92 m33 60
7 92 a89 28
这是行不通的:
df.groupby('userid').max()
预期输出:
userid product price
77 a89 30
92 m33 60
123 a89 25
实际输出:
userid product price
77 q45 30
92 xt23 60
123 xt23 25
产品列中的值不正确。如果我将“产品”添加到 groupby,最高价格仍然正确,但我只想看到每个用户的一个价格和产品。我也尝试设置 numeric_only=True 但这并没有解决问题。
有谁知道为什么产品价值与原始数据不一致?
解决方案
使用它可以有效地获得所需的输出。
idx = df.groupby(['userid'])['price'].transform(max) == df['price']
print(df[idx])
推荐阅读
- hive - 除了在databrick sql(spark sql)中不起作用的命令
- java - org.apache.kafka.connect.errors.DataException:属性不是有效的字段名称
- excel - Excel:根据所选条件自动填充的最佳方式
- java - 在简单的打印 hello world 程序中的 kubernetes 部署中出现错误“ErrImagePull”
- mysql - 在 mysql 全文搜索短语中使用通配符
- github - 通过 Visual Studio 将具有多个项目的单个解决方案添加到 Github
- blender - 3D 模型(.obj 或 .fbx 或 .glb)不会在 Hololens 2 3d-viewer 中加载
- javascript - Firebase 云函数:“未处理的错误 RangeError:超出最大调用堆栈大小”
- android - 材料设计绘图图标不显示
- python - 是否可以将 pip 包从一个 python 版本移动到另一个版本?