Усреднение дубликатов в pandas DataFrame вместо использования drop_duplicates для сохранения первыми - PullRequest
0 голосов
/ 14 апреля 2020

Предположим, у меня есть Pandas DataFrame в форме:

    id      price       dur
1   153     80.0        0.0 
2   153     130.0       0.0 
3   153     95.0        0.0 
4   156     115.0       0.0
5   156     165.0       0.0
6   156     130.0       0.0
7   158     90.0        0.0
8   158     140.0       0.0 
9   158     105.0       0.0
10  158     155.0       0.0

И у меня есть столбец с именем id, и он имеет duplicates. Я хотел бы обработать это duplicates, сохранив unique id и затем выполнив среднее значение price из id вместо использования pd.DataFrame.drop_duplicates()

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

    id      price       dur
1   153     101.667     0.0 
2   156     136.667     0.0
3   158     122.5       0.0

Как я мог справиться с этим?

1 Ответ

1 голос
/ 14 апреля 2020

Для каждого столбца необходимо указать агрегирующую функцию в GroupBy.agg:

df1 = df.groupby('id', as_index=False).agg({'price':'mean', 'dur':'first'})
print (df1)
    id       price  dur
0  153  101.666667  0.0
1  156  136.666667  0.0
2  158  122.500000  0.0

Но если одинаковые значения в dur для каждого id, возможно группирование по обоим столбцам :

df2 = df.groupby(['id', 'dur'], as_index=False)['price'].mean()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...