Сумма по годам и итогам pandas датафрейм - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть следующий фрейм данных lrdata3 , и я хотел бы суммировать total_vehicles за каждый год вместо нескольких отдельных для одного и того же года.

year	total_vehicles
0	2000	2016
1	2000	1483
2	2000	1275
3	2000	1086
4	2000	816

Когда я делаю это

lrdata3.groupby('year')['total_vehicles'].sum()

Я получаю это, которое даже не является фреймом данных

year
2000    419587299
2001    425832533
2002    430480581
2003    434270003
2004    442680113
2005    443366960
2006    452086899
2007    452280161
2008    445462026
2009    443333980
2010    438827716
2011    440461505
2012    440073277
2013    441751395
2014    451394270
2015    460050397
2016    470256985
2017    474693803
2018    473765568

Любая помощь, пожалуйста? Спасибо

Ответы [ 3 ]

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

Вы можете сделать это в одной строке и получить df с этим синтаксисом.

Некоторые примеры данных:

year    total_vehicles
0   2000    2016
1   2000    1483
2   2000    1275
3   2000    1086
4   2000    816
5   2001    2016
6   2001    1483
7   2001    1275
8   2002    1086
9   2002    816

df = pd.read_clipboard()

gb = df.groupby('year').agg({'total_vehicles': 'sum'})

print(gb)

    total_vehicles
year    
2000    6676
2001    4774
2002    1902

print(type(gb))

<class 'pandas.core.frame.DataFrame'>
1 голос
/ 27 апреля 2020

Ваш код в порядке, просто добавьте к нему .reset_index(). Вот так:

lrdata3.groupby('year')['total_vehicles'].sum().reset_index()

Это даст вам то, что вы хотите.

0 голосов
/ 27 апреля 2020
lrdata3.groupby('year')['total_vehicles'].sum().to_frame()

или сгруппировать и преобразовать

lrdata3['yearlytotal_vehicles']=lrdata3.groupby('year')['total_vehicles'].transform('sum')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...