diff() 不包括每个组的第一行



我正在尝试获取数据框中连续值之间的差异(我已经分组了(。当我使用以下代码时,所有第一行"值"字段都更改为我需要的 NAN 字段。我想从差异操作中排除第一行。有人可以帮我吗?

SNo  Var %    Value
1000    0    1.2
1000    1    2.2
1000    2    3.2
1000    3    4.2
1000    4    5.2
1000    4    6.2
1000    5    7.2
1000    5    8.2
1001    0    0.5
1001    1    1.5
1001    2    2.5
1001    2    3.5
x['value_diff'] = x.groupby('SNo').value.diff()
SNo  Var %    Value
1000    0    NAN
1000    1    1
1000    2    1
1000    3    1
1000    4    1
1000    4    1
1000    5    1
1000    5    1
1001    0    NAN
1001    1    1
1001    2    1
1001    2    1

第一行"值"字段正在更改为我需要的 NAN 字段。

如评论中所述,您需要:

df.groupby('SNo').Value.diff().fillna(df.Value)

这将填充Value列中同一索引中的NaN


0     1.2
1     1.0
2     1.0
3     1.0
4     1.0
5     1.0
6     1.0
7     1.0
8     0.5
9     1.0
10    1.0
11    1.0

最新更新