大熊猫连续组

问题描述:

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 
+0

wow.That是一个巧妙的花招。 – joseph