如何解决Pandas - 根据第一列值按百分比转换列
有一个包含总数和计数的数据框:
pd.DataFrame({
'categorie':['a','b','c'],'total':[100,1000,500],'x':[10,100,5],'y':[100,500]
})
类别 | 总计 | x | y |
---|---|---|---|
一 | 100 | 10 | 100 |
b | 1000 | 100 | 1000 |
c | 500 | 5 | 500 |
我喜欢将计数的列转换为基于总数的百分比:
类别 | 总计 | x% | y% |
---|---|---|---|
一 | 100 | 10 | 100 |
b | 1000 | 10 | 100 |
c | 500 | 1 | 100 |
(100 * df['x'] / df['total']).round(1)
如何将其应用于数据框中的所有列?
解决方法
通过 div()
、mul()
和 astype()
方法尝试:
df[['x%','y%']]=df[['x','y']].div(df['total'],axis=0).mul(100).astype(int)
df
的输出:
categorie total x y x% y%
0 a 100 10 100 10 100
1 b 1000 100 1000 10 100
2 c 500 5 500 1 100
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。