如何使用python pandas计算给定列的特定行的百分比?

时间:2016-04-22 11:24:01

标签: python python-2.7 pandas

student,total,m1,m2,m3
a,500,120,220,160
b,600,180,120,200

这是我的数据框,我只想将m1,m2,m3列计算为total列的百分比。我需要输出如下面的数据框

student,total,m1,m2,m3,m1(%),m2(%),m3(%)
a,500,120,220,160,24,44,32
...

例如m1(%)列将使用(m1/total)*100计算。

1 个答案:

答案 0 :(得分:2)

我认为您可以使用div

df = pd.DataFrame({'total': {0: 500, 1: 600}, 
                   'm1': {0: 120, 1: 180}, 
                   'm3': {0: 160, 1: 200}, 
                   'student': {0: 'a', 1: 'b'},
                   'm2': {0: 220, 1: 120}},
                    columns=['student','total','m1','m2','m3'])

print df
  student  total   m1   m2   m3
0       a    500  120  220  160
1       b    600  180  120  200


df[['m1(%)','m2(%)','m3(%)']] = df[['m1','m2','m3']].div(df.total, axis=0)*100
print df
  student  total   m1   m2   m3  m1(%)  m2(%)      m3(%)
0       a    500  120  220  160   24.0   44.0  32.000000
1       b    600  180  120  200   30.0   20.0  33.333333