Python 2.7 Pandas-查找各组中值的百分比

Python 2.7 Pandas-查找各组中值的百分比,python-2.7,pandas,pandas-groupby,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,10

我有一个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

现在,我想找到由前三列分组的每个主要类型的百分比。例如,对于节拍=111,小时=上午10点,月份=4月,%attack=12/(12+5+1+4)*100。有人能给你一个关于如何使用熊猫做这件事的线索吗?

你可以使用
transform
sum

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

谢谢它帮助了@buddingengineer yw~:-)愉快的编码