2017-07-14 12 views
0
d = pd.DataFrame({'a':[7,6,3,4,8], 'b':['c','c','d','d','c']}) 
d.groupby('b')['a'].diff() 

内間の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グループです。

答えて

2

あなたは

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は巧妙なトリックである連続したセグメントにgroupbyする必要があります。 – joseph

関連する問題