python-3.x - pandas:附加一个带有分位数值的列
问题描述
我有以下数据框
item_id group price
0 1 A 10
1 3 A 30
2 4 A 40
3 6 A 60
4 2 B 20
5 5 B 50
我希望根据每个组的价格添加一个分位数列,如下所示:
item_id group price quantile
01 A 10 0.25
03 A 30 0.5
04 A 40 0.75
06 A 60 1.0
02 B 20 0.5
05 B 50 1.0
我可以遍历整个数据框并为每个组执行计算。但是,我想知道有没有更优雅的方法来解决这个问题?谢谢!
解决方案
你df.rank()
需要pct=True
:
pct : bool, default False 是否以百分位形式显示返回的排名。
df['quantile']=df.groupby('group')['price'].rank(pct=True)
print(df)
item_id group price quantile
0 1 A 10 0.25
1 3 A 30 0.50
2 4 A 40 0.75
3 6 A 60 1.00
4 2 B 20 0.50
5 5 B 50 1.00
推荐阅读
- ios - 在黑盒情况下处理丢失的 dSYM 文件
- apache-spark - 为什么 Pyspark 没有编码器
- r - 在条件之前和之后的行中添加包含数据的列
- javafx - 如何为 JavaFX TableView 列制作通用 TableColumn 渲染器
- npm - 无法解决节点项目中的对等依赖项
- c# - 为远程进程从外部调用 FreeLibraryAndExitThread
- python - 使用扩展的 django 用户模型更新配置文件模型中的数据
- mqtt - 我正在编写一个代码来读取 DHT11 值并控制 4 个继电器但温度。传感器每次都向我显示“nan”
- javascript - 有没有办法在不篡改浏览器历史状态的情况下使用后退按钮关闭模式?
- vim - 如何使 vimdiff 检测行尾字符的差异(dos vs unix)