熊猫-每个列的百分比值

时间:2020-06-18 11:39:38

标签: pandas percentage

我还是一个初学者,只是遇到了这个问题。

我有一个78行×138列的数据框,看起来像这样:

        2009-01     2009-02     2009-03     2009-04     ...
name1       1           1           3           1   
name2       0           1           1           1
name3       1           1           1           0

我想要类似的东西

        2009-01     2009-02     2009-03     2009-04     ...
name1       50%         33%         60%         50%     
name2       0           33%         20%         50%
name3       50%         33%         20%         0

看起来很简单,但我正在努力...

1 个答案:

答案 0 :(得分:1)

DataFrame.div除以sum,然后用100除以-输出为数值:

df1 = df.div(df.sum()).mul(100).round()
print (df1)
       2009-01  2009-02  2009-03  2009-04
name1     50.0     33.0     60.0     50.0
name2      0.0     33.0     20.0     50.0
name3     50.0     33.0     20.0      0.0

如果需要所有值百分比:

df = df.div(df.sum()).mul(100).astype(int).astype(str).add('%')
print (df)
      2009-01 2009-02 2009-03 2009-04
name1     50%     33%     60%     50%
name2      0%     33%     20%     50%
name3     50%     33%     20%      0%

如果要为不带0的所有值添加百分数(像所有字符串数据的字符串一样使用0):

df3 = df.div(df.sum()).mul(100).astype(int).astype(str).add('%').mask(df.eq(0), '0')
print (df3)
      2009-01 2009-02 2009-03 2009-04
name1     50%     33%     60%     50%
name2       0     33%     20%     50%
name3     50%     33%     20%       0