在大熊猫分组之后找到百分比相加之和

时间:2019-03-01 08:49:36

标签: python pandas

我有一个这样的数据框:

df = pd.DataFrame({'x': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'], 'y': [0,1,0,1,0,1,0,1], 'z':[100, 102, 110, 115, 200, 202, 230, 240]})

   x  y    z
0  a  0  100
1  a  1  102
2  a  0  110
3  a  1  115
4  b  0  200
5  b  1  202
6  b  0  230
7  b  1  240

之后:

df.groupby(['x', 'y'])['z'].sum()

x  y
a  0    210
   1    217
b  0    430
   1    442

我想找出每组百分比之和之间的差异。 换句话说,我想要这样:

(217-210)/210 = 3.33
(442-430)/430 = 2.79

1 个答案:

答案 0 :(得分:1)

您可以groupby xy并像以前一样使用sum,然后使用DataFrame.pct_change进行分组后的百分比变化再次由x

g = df.groupby(['x','y'])['z'].sum()
g.groupby(level=0).pct_change().mul(100).dropna().reset_index(drop=True, level=1)

x
a    3.333333
b    2.790698
Name: z, dtype: float64