![](/img/trans.png)
[英]How to use pandas groupby to calculate percentage of total in each column
[英]Best Way to Calculate Column Percentage of Total 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? 有人可以告訴我更有效的計算方法嗎?
您可以如下划分:
>>> 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
>>> print df.drop('Total', axis=1).divide(df.Total, axis=0)
Group1 Group2
0 0.600 0.400
1 0.950 0.050
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.