diff()排除每个组的第一行

时间:2019-05-29 16:10:45

标签: python pandas

我试图获取数据帧(已分组)中连续值之间的差。当我使用以下代码时,所有第一行的“值”字段都将变为我需要的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

1 个答案:

答案 0 :(得分:0)

  

第一行的“值”字段将更改为我需要的NAN。

如评论中所述,您需要:

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

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


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