我已经尝试了论坛上发布的几种想法,但没有一个非常有效。我有一个产品标识符和价格的数据框。我已经将 df 缩小到仅同一产品在较大数据库中具有多个价格的情况。现在我想创建一个新列,该列将是给定产品的平均价格。IE:
ID Price
ABC1 101.45
XYZ2 88.12
ABC1 99.24
XYZ2 82.99
ABC1 105.00
Run Code Online (Sandbox Code Playgroud)
我想要的输出是这样的:
ID Price AvgPx
ABC1 101.45 101.897
XYZ2 88.12 85.556
ABC1 99.24 101.897
XYZ2 82.99 85.556
ABC1 105.00 101.897
Run Code Online (Sandbox Code Playgroud)
我尝试过各种版本的 groupby 和 for 循环,但没有什么效果。感谢您的帮助!
虽然提供的其他解决方案效果很好,但我认为transform在这里使用会产生干净、易于阅读的代码:
df['AvgPx'] = df.groupby('ID')['Price'].transform('mean')
>>> df
ID Price AvgPx
0 ABC1 101.45 101.896667
1 XYZ2 88.12 85.555000
2 ABC1 99.24 101.896667
3 XYZ2 82.99 85.555000
4 ABC1 105.00 101.896667
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3265 次 |
| 最近记录: |