groupby с несколькими условиями и операциями - PullRequest
0 голосов
/ 09 мая 2020

У меня проблема, я хочу сгруппировать и выполнить некоторую операцию с фреймворком данных. Фрейм данных ввода выглядит примерно так: input Dataframe

Я хочу группировать по уникальному идентификатору, но если есть два наблюдения, мне нужны две строки с одним уникальным идентификатором. может быть любое количество наблюдений в 1 unique_ID

Ожидаемый результат:

output dataframe

Я попытался подсчитать и другие столбцы вне его, чтобы помочь в группе, но я не работал на меня.

df["Count_ob"] = df.groupby("Unique_ID")["IF_car_history"].sum()

Помощь предоставляется. Спасибо

1 Ответ

1 голос
/ 09 мая 2020
df = pd.DataFrame({'Unique_id':[1,1,2,2,3,3,3,3],
                   'Car_history':[0,1,0,1,0,1,0,1],
                   'Value':[1000,1500,1000,1200,800,700,1300,1700],
                   'Ob_id':[0,1,0,2,0,3,0,4]})


df["Count_ob"] = df.Ob_id[::-1].cumsum()[::-1] # <=== this do the trick!!!
df["Count_ob"] = df["Count_ob"].max() - df["Count_ob"]

df = df.groupby("Count_ob")[["Unique_id","Car_history","Value","Ob_id"]].agg({'Unique_id':'max',
                                                                        'Car_history':'sum',
                                                                        'Value':'sum',
                                                                        'Ob_id':'sum'}).reset_index(drop=True)
df['Value'] = df.groupby('Unique_id')['Value'].cumsum().values
...