【发布时间】:2021-02-06 15:39:45
【问题描述】:
在 R 中,我可以计算数据集中每个组随时间的变化,如下所示:
df %>%
group_by(z) %>%
mutate(diff = y - y[x == 0])
pandas 中的等价物是什么?
我知道使用 pandas 可以像这样减去列的第一个值:
df['diff'] = df.y-df.y.iloc[0]
但是如何按变量 z 分组?
示例数据:
x y z
0 2 A
5 4 A
10 6 A
0 1 B
5 3 B
10 9 B
预期输出:
x y z diff
0 2 A 0
5 4 A 2
10 6 A 4
0 1 B 0
5 5 B 4
10 9 B 8
【问题讨论】:
-
您能提供示例数据和预期输出吗?
-
df['diff'] = df['y'].sub(df.groupby('z')['y'].transform('first'))或df.groupby('z')['y'].diff()? -
@ansev 感谢您的快速单行回答,正是我正在寻找的那种东西!
-
那你为什么接受?答案?我可以像回答一样发布评论,如果你愿意,你可以接受它:)
-
对不起,两个答案都很好,但你的更简洁一些。