IDごとに最初に連続してグループ化するデータフレームがあります
id value
a1 1
a1 3
a1 4
a2 1
a2 2
a2 3
a2 5
a2 8
a2 9
各IDの「最初の」連続グループを識別する出力が必要です。差分測定を試しましたが、中断後に連続するid値を返すため、無駄になりました。
この種の出力が欲しい
id value
a1 1
a2 1
a2 2
a2 3
提案をいただければ幸いです
アイデアはq
、累積合計と等しくない場合の差を比較して連続したグループを作成し、最初のグループの場合はGroupBy.transform
、GroupBy.first
またはで最初の値をテストすることですGroupBy.min
。
s = df['value'].diff().ne(1).cumsum()
df1 = df[s.groupby(df['id']).transform('first').eq(s)]
#alternative
#df1 = df[s.groupby(df['id']).transform('min').eq(s)]
print (df1)
id value
0 a1 1
3 a2 1
4 a2 2
5 a2 3
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加