大熊猫连续组
问题描述:
d = pd.DataFrame({'a':[7,6,3,4,8], 'b':['c','c','d','d','c']})
d.groupby('b')['a'].diff()
内差异比较之间给了我大熊猫连续组
0 NaN
1 -1.0
2 NaN
3 1.0
4 2.0
什么我需要
0 NaN
1 -1.0
2 NaN
3 1.0
4 NaN
这是集团内唯一连续值之间的差异,所以当一组陆续出现组,它以前的值被忽略。
在我的例子中最后一个c
的值是一个新的c
组。
答
您将需要groupby
连续段
In [1055]: d.groupby((d.b != d.b.shift()).cumsum())['a'].diff()
Out[1055]:
0 NaN
1 -1.0
2 NaN
3 1.0
4 NaN
Name: a, dtype: float64
详细
In [1056]: (d.b != d.b.shift()).cumsum()
Out[1056]:
0 1
1 1
2 2
3 2
4 3
Name: b, dtype: int32
wow.That是一个巧妙的花招。 – joseph