Pandas сгруппированная сумма дает неправильный вывод - PullRequest
0 голосов
/ 23 апреля 2020

Мой DataFrame:

State = ['CA', 'CA', 'CA', 'CA', 'SR', 'SR', 'SR', 'SR']
County = ['UC', 'UC', 'DB', 'DB', 'DD', 'DD', 'DD', 'DD']
Count  = [100, 100, 150, 150, 200, 200, 200, 200]
df = pd.DataFrame({'State': State, 'County': County, 'Count' : Count})

Ожидаемый вывод:

 State  Count
0    CA    250
1    SR    200

Вот что я делаю:

df_new = df.groupby(['State']).sum().reset_index()

Вот что я получаю:

 State  Count
0    CA    500
1    SR    800

Если округ повторяется в штате. он должен игнорировать дублированную запись. Но почему он этого не делает?

Ответы [ 2 ]

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

Попробуйте использовать drop_duplicates, сначала отфильтровывая фрейм данных, затем по группам и сумме:

df.drop_duplicates(['State', 'County']).groupby('State').sum().reset_index()

Вывод:

  State  Count
0    CA    250
1    SR    200
0 голосов
/ 23 апреля 2020

Другой способ сделать это - использовать лямбда-функции

df.groupby(['State']).apply(lambda x: x.groupby(['County']).Count.first().sum()).reset_index()

Вывод:

State   0
0   CA  250
1   SR  200

Надеюсь, это поможет :)

...