大Pandas分组后总和百分比差异的研究

2024-04-19 15:41:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

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

Tags: 数据dataframedfpd百分比sumgroupby总和
1条回答
网友
1楼 · 发布于 2024-04-19 15:41:26

您可以^{}同时xy并采用sum,然后使用^{}采用再次按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

相关问题 更多 >