Pandas формат данных не правильный формат для группы, что не так? - PullRequest
1 голос
/ 24 марта 2020

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

Вот минимальный пример:

import pandas as pd
data = [['Alex',10, 11],['Bob',12, 10],['Clarke',13, 9], ['Clarke',1, 1]]
df = pd.DataFrame(data,columns=['Name','points1', 'points2'])
print(df)

df.groupby('Name').sum()

print(df)

Я получаю это:

     Name  points1  points2
0    Alex       10       11
1     Bob       12       10
2  Clarke       13        9
3  Clarke        1        1

А не это:

     Name  points1  points2
0    Alex       10       11
1     Bob       12       10
2  Clarke       14       10

Из чего я Следует понимать, что датафрейм не является правильным форматом для pandas для группирования. Я хотел бы понять, что с ним не так, потому что это просто игрушечный пример, но у меня та же проблема с реальным набором данных.

Реальные данные, которые я пытаюсь прочитать, - это Университет Джона Хопкинса. Набор данных Covid-19:

https://github.com/CSSEGISandData/COVID-19/tree/master/csse_covid_19_data/csse_covid_19_time_series

1 Ответ

1 голос
/ 24 марта 2020

Вы забыли назначить вывод агрегации переменной, потому что агрегация не работает на месте. Таким образом, в вашем решении print (df) до и после groupby возвращается один и тот же оригинал DataFrame.

df1 = df.groupby('Name', as_index=False).sum()  
print (df1)
     Name  points1  points2
0    Alex       10       11
1     Bob       12       10
2  Clarke       14       10

Или вы можете установить одну и ту же переменную df:

df = df.groupby('Name', as_index=False).sum()  
print (df)
     Name  points1  points2
0    Alex       10       11
1     Bob       12       10
2  Clarke       14       10
...