我试图根据第一列的值求和所有列,但是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
据我了解,数据框不是熊猫执行分组依据的正确格式。我想了解一下这是怎么回事,因为这只是一个玩具示例,但是对于真实的数据集,我也有同样的问题。
我要读取的真实数据是约翰霍普金斯大学Covid-19数据集:
https://github.com/CSSEGISandData/COVID-19/tree/master/csse_covid_19_data/csse_covid_19_time_series
答案 0 :(得分:1)
您忘记将聚合的输出分配给变量,因为聚合不能就地工作。因此,在您的解决方案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