【问题标题】:Pandas dataframe not correct format for groupby, what is wrong?Pandas 数据框的 groupby 格式不正确,出了什么问题?
【发布时间】:2020-03-24 18:23:27
【问题描述】:

我正在尝试根据第一列的值对所有列求和,但 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

【问题讨论】:

    标签: python-3.x pandas pandas-groupby


    【解决方案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
    

    【讨论】:

    • 啊,是的,不是就地。 \脸掌
    猜你喜欢
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2020-01-27
    • 2020-04-21
    • 2021-03-06
    • 2018-09-18
    • 1970-01-01
    相关资源
    最近更新 更多