我有一个数据框,如下所示:
cust_id state city buy_times
1. 123 delhi xyz 2
2. 234 haryana ggm 4
3. 345 delhi abc 7
4. 456 AP asd 3
等等。
我需要计算每个城市和州的销售百分比。
df = data.groupby(['state','city'])['buy_times].sum()
使用此命令,我获得了每个城市和州的销售总数。但我无法计算出相同的百分比。
答案 0 :(得分:0)
如果需要新的原始列df
列,我认为您需要transform
:
print (data)
cust_id state city buy_times
0 123 delhi xyz 2
1 345 delhi abc 7
2 234 haryana ggm 4
3 345 delhi xyz 7
4 456 AP asd 3
sum1 = data.groupby(['state','city'])['buy_times'].transform('sum')
data['new'] = data['buy_times'].div(sum1)
print (data)
cust_id state city buy_times new
0 123 delhi xyz 2 0.222222
1 345 delhi abc 7 1.000000
2 234 haryana ggm 4 1.000000
3 345 delhi xyz 7 0.777778
4 456 AP asd 3 1.000000
如果需要总值的百分比:
df1 = data.groupby(['state','city'])['buy_times'].sum()
df = df1.div(df1.groupby('state').transform('sum')).reset_index(name='perc')
print (df)
state city perc
0 AP asd 1.0000
1 delhi abc 0.4375
2 delhi xyz 0.5625
3 haryana ggm 1.0000