【问题标题】:pandas.DataFrame.groupby leaving out columnspandas.DataFrame.groupby 省略列
【发布时间】:2019-04-04 22:43:23
【问题描述】:

我有一个包含一些值的 Pandas DataFrame,我想根据 date 列总结这些值。

DataFrame 如下所示:

当我运行 pandas.DataFrame.groupby(['date']).sum() 时,我得到了

如您所见,这不是我想要的结果,因为我希望汇总所有列,而不仅仅是 polaritysubjectivity

有谁知道为什么只总结这两个,我怎样才能得到想要的结果?

谢谢。

【问题讨论】:

  • 您可以运行df.dypes 来查看其他列的类型吗?它们可能不是numeric(整数或浮点数)。这就是为什么他们没有被求和。

标签: python pandas dataframe group-by


【解决方案1】:

我们需要numeric 列才能对其进行计算,在本例中为sum

#Example dataframe
df = pd.DataFrame({'date':['2019-01-04', '2019-01-04', '2019-01-03', '2018-12-22', '2018-08-31'],
                   'replies_count':['46', '143', '64', '154', '50'],
                   'polarity':[10, 20, 30, 40, 50]})

print(df)
         date replies_count  polarity
0  2019-01-04            46        10
1  2019-01-04           143        20
2  2019-01-03            64        30
3  2018-12-22           154        40
4  2018-08-31            50        50

检查列的类型

print(df.dtypes)

date             object
replies_count    object
polarity          int64
dtype: object

sum申请groupby

print(df.groupby('date').sum())

            polarity
date                
2018-08-31        50
2018-12-22        40
2019-01-03        30
2019-01-04        30

现在将replies_count 列的类型更改为int 并使用sum 执行相同的groupby

df['replies_count'] = df['replies_count'].astype(int)

print(df.groupby('date').sum())
            replies_count  polarity
date                               
2018-08-31             50        50
2018-12-22            154        40
2019-01-03             64        30
2019-01-04            189        30

如我们所见,该列现在已包含在内。

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 2020-01-20
    • 2012-04-12
    • 2015-10-27
    相关资源
    最近更新 更多