繁体   English   中英

如何从组中的每个其他值计算每个组中的第一个值以计算随时间的变化?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM