[英]How do I calculate the first value in each group from every other value in the group to calculate change over time?
在 RI 中,可以像这样计算数据集中每个组随时间的变化:
df %>%
group_by(z) %>%
mutate(diff = y - y[x == 0])
熊猫中的等价物是什么?
我知道使用熊猫可以减去这样的列的第一个值:
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
你可以试试这个。
temp = df.groupby('z').\
apply(lambda g: g.y - g.y[0]).\
reset_index().\
rename(columns={'y': 'diff'}).\
drop('z', axis=1)
df.merge(temp, how='inner', left_index=True, right_on='level_1').\
drop('level_1', axis=1)
返回:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.