我有一个包含一些值的Pandas DataFrame,我想根据date
列对这些值求和。
DataFrame如下所示:
https://github.com/karma-runner/karma/issues/1507
当我运行pandas.DataFrame.groupby(['date']).sum()
时,我会得到
如您所见,这不是我想要的结果,因为我希望汇总所有列,而不仅仅是polarity
和subjectivity
。
有人知道为什么只将这两个加起来吗?我怎么能得到想要的结果?
谢谢。
答案 0 :(得分:2)
我们需要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
将groupby
应用于sum
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
,并用groupby
做同样的sum
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
如我们所见,该列现已包括在内。