Pandas 添加新列并查找组总数百分比的常见方法
稳定地将任务从excel转移到pandas,在创建依赖于分组和其他两列值的新列时,有哪些常用方法 在excel中,这可以通过a=B2/SUMIFS(B:B,a:a,A2)实现——熊猫中是否有类似的简单方法?我试过了,但运气不好 示例如下: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},
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