Сохранить наибольшее значение на основе суммы двух групп в пандахPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Сохранить наибольшее значение на основе суммы двух групп в пандах

Сообщение Anonymous »

У меня есть пандас данных. DataFrame имеет 4 столбца. Последний - это всего лишь некоторые случайные данные. Первые два столбца - это столбцы, которые я буду группировать и суммировать столбец значения. Из каждой группировки я хотел бы только сохранить первую строку (то есть группа с самой большой суммой). < /P>

Мои данные: < /p>

import pandas as pd

df = pd.DataFrame(data=[['0', 'A', 3, 'a'],
['0', 'A', 2, 'b'],
['0', 'A', 1, 'c'],
['0', 'B', 3, 'd'],
['0', 'B', 4, 'e'],
['0', 'B', 4, 'f'],
['1', 'C', 3, 'g'],
['1', 'C', 2, 'h'],
['1', 'C', 1, 'i'],
['1', 'D', 3, 'j'],
['1', 'D', 4, 'k'],
['1', 'D', 4, 'l']
], columns=['group col 1', 'group col 2', 'value', 'random data']
)
< /code>

желаемый вывод: < /p>

group col 1 group col 2 value random data
3 0 B 3 d
4 0 B 4 e
5 0 B 4 f
9 1 D 3 j
10 1 D 4 k
11 1 D 4 l
< /code>

У меня есть неэффективный способ добраться туда, но ищу более простое решение. < /p>

Мое решение: < /p>

df1 = df.groupby(['group col 1','group col 2']).agg('sum').reset_index()
biggest_groups= df1.sort_values(by=['group col 1', 'value'], ascending=[True, False])
biggest_groups = biggest_groups.groupby('group col 1').head(1)
pairs = biggest_groups[['group col 1', 'group col 2']].values.tolist()
pairs = [tuple(i) for i in pairs]
df = df[df[['group col 1', 'group col 2']].apply(tuple, axis = 1).isin(pairs)]


Подробнее здесь: https://stackoverflow.com/questions/610 ... -in-pandas
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»