Я хочу построить группы данных на основе различий между группами.Например, рассмотрим следующее
import pandas as pd
df = pd.DataFrame([['a', 1],['a', 1],['b', 1],['a', 2],['b', 3],['b', 3],['b', 3],['b', 4],['a', 5],['a', 5],['a', 6],['b', 6]], columns=['id', 'x'])
df['diff'] = df.groupby(['id', 'x'])['x'].diff()
Теперь я могу (df['diff'] != 0).astype(int).cumsum()
, и это даст группы, основанные на изменении x
.Однако это не относится к группе id
.Я не могу понять, как запустить это через groupby
.
С groupby
и выражением cumsum
я получаю книгу с одним логическим значением вместо серии логических значений.Кроме того, я не могу преобразовать его в int
с astype
.Я предполагаю, что это можно сделать, но только не таким образом.Любая помощь очень ценится.