Pandas - 查找每组中值的百分比

时间:2018-03-26 14:45:42

标签: python-2.7 pandas pandas-groupby

我有一个像下面这样的csv文件。

Beat,Hour,Month,Primary Type,COUNTER
111,10AM,Apr,ASSAULT,12
111,10AM,Apr,BATTERY,5
111,10AM,Apr,BURGLARY,1
111,10AM,Apr,CRIMINAL DAMAGE,4
111,10AM,Aug,MOTOR VEHICLE THEFT,2
111,10AM,Aug,NARCOTICS,1
111,10AM,Aug,OTHER OFFENSE,18
111,10AM,Aug,THEFT,38

现在,我想找到按前三列分组的每种主要类型的百分比。例如,For Beat = 111,Hour = 10AM,Month = Apr,%Assault = 12 /(12 + 5 + 1 + 4)* 100.任何人都可以使用pandas给出如何做到这一点的线索吗?

1 个答案:

答案 0 :(得分:2)

您可以使用transform

df['New']=df.COUNTER/df.groupby(['Beat','Hour','Month']).COUNTER.transform('sum')*100
df
Out[575]: 
   Beat  Hour Month         Primary Type  COUNTER        New
0   111  10AM   Apr              ASSAULT       12  54.545455
1   111  10AM   Apr              BATTERY        5  22.727273
2   111  10AM   Apr             BURGLARY        1   4.545455
3   111  10AM   Apr      CRIMINAL DAMAGE        4  18.181818
4   111  10AM   Aug  MOTOR VEHICLE THEFT        2   3.389831
5   111  10AM   Aug            NARCOTICS        1   1.694915
6   111  10AM   Aug        OTHER OFFENSE       18  30.508475
7   111  10AM   Aug                THEFT       38  64.406780
相关问题