计算总熊猫柱百分比的最佳方法

时间:2015-11-03 01:05:11

标签: python pandas

说我有以下数据框:

>>> df=pd.DataFrame([[150,90,60],[200,190,10],[400,150,250]], columns=['Total','Group1','Group2'])
>>> df
   Total  Group1  Group2
0    150      90      60
1    200     190      10
2    400     150     250
>>> 

如您所见,第1组和第2组总计达到总数(人口普查数据中的思维年龄类别)。我想计算每组中的百分比。

现在我按照以下方式执行此操作:

>>> df2=df.copy()
>>> for Group in ['Group1','Group2']:
...     df2[Group]=df[Group]/df['Total']*100
... 
>>> 
>>> df2
   Total  Group1  Group2
0    150    60.0    40.0
1    200    95.0     5.0
2    400    37.5    62.5
>>> 

但是,我确定没有for循环可以做到这一点。也许使用applymap或map?有人能告诉我更有效的计算方法吗?

2 个答案:

答案 0 :(得分:2)

您可以按如下方式划分:

>>> df.div(df.Total.values, axis=0)
   Total  Group1  Group2
0      1   0.600   0.400
1      1   0.950   0.050
2      1   0.375   0.625

我不建议混合值和百分比,但如果你真的想,你可以重新分配Total

df2 = df.div(df.Total.values, axis=0)
df2['Total'] = df.Total

答案 1 :(得分:2)

>>> print df.drop('Total', axis=1).divide(df.Total, axis=0)
   Group1  Group2
0   0.600   0.400
1   0.950   0.050