Pandas 添加新列并查找组总数百分比的常见方法

Pandas 添加新列并查找组总数百分比的常见方法,pandas,dataframe,pandas-groupby,transform,calculated-columns,Pandas,Dataframe,Pandas Groupby,Transform,Calculated Columns,稳定地将任务从excel转移到pandas,在创建依赖于分组和其他两列值的新列时,有哪些常用方法 在excel中,这可以通过a=B2/SUMIFS(B:B,a:a,A2)实现——熊猫中是否有类似的简单方法?我试过了,但运气不好 示例如下: import pandas as pd data = [{'GROUP': 1, 'VALUE': 3}, {'GROUP': 1, 'VALUE': 3}, {'GROUP': 1, 'VALUE': 4},

稳定地将任务从excel转移到pandas,在创建依赖于分组和其他两列值的新列时,有哪些常用方法

在excel中,这可以通过a=B2/SUMIFS(B:B,a:a,A2)实现——熊猫中是否有类似的简单方法?我试过了,但运气不好

示例如下:

import pandas as pd

data = [{'GROUP': 1, 'VALUE': 3},
        {'GROUP': 1, 'VALUE': 3},
        {'GROUP': 1, 'VALUE': 4},
        {'GROUP': 2, 'VALUE': 2},
        {'GROUP': 2, 'VALUE': 2},
        {'GROUP': 2, 'VALUE': 6}]

df = pd.DataFrame(data)

df['PERC_TOTAL'] = df['VALUE'] / df['VALUE'].sum() 

#df['GRP_PERC_TOTAL'] = ??? idx 0 and 1 would equal 0.30 idx 2 would equal .40
df

格罗普比转型的策略应该是正确的:

df['GRP_PERC_TOTAL'] = df["VALUE"] / df.groupby("GROUP")["VALUE"].transform("sum")
结果

print(df)
   GROUP  VALUE  PERC_TOTAL  GRP_PERC_TOTAL
0      1      3        0.15             0.3
1      1      3        0.15             0.3
2      1      4        0.20             0.4
3      2      2        0.10             0.2
4      2      2        0.10             0.2
5      2      6        0.30             0.6

gropuby转型
战略应该走在正确的轨道上:

df['GRP_PERC_TOTAL'] = df["VALUE"] / df.groupby("GROUP")["VALUE"].transform("sum")
结果

print(df)
   GROUP  VALUE  PERC_TOTAL  GRP_PERC_TOTAL
0      1      3        0.15             0.3
1      1      3        0.15             0.3
2      1      4        0.20             0.4
3      2      2        0.10             0.2
4      2      2        0.10             0.2
5      2      6        0.30             0.6