我有以下数据框 lrdata3 ,我想对每年的total_vehicle求和,而不是对同一年进行多次单独计算。
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
请帮忙吗? 谢谢
答案 0 :(得分:1)
您可以在一行中完成此操作,并使用此语法获取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 :(得分:0)
lrdata3.groupby('year')['total_vehicles'].sum().to_frame()
lrdata3['yearlytotal_vehicles']=lrdata3.groupby('year')['total_vehicles'].transform('sum')
答案 2 :(得分:0)
您的代码很好,只需在其中添加一个.reset_index()
。像这样:
lrdata3.groupby('year')['total_vehicles'].sum().reset_index()
这将为您提供想要的东西。