【发布时间】:2019-02-24 14:33:31
【问题描述】:
这个数据框:
df = pd.DataFrame({'delivery_date' : ['2018-09-07' ,'2018-09-07','2018-09-08','2018-09-09','2018-09-10'],
'user' : ['user1','user1','user2','user3','user3'],
'number_of_papers' : [3,4,3,2,4]})
我想和delivery_date 和user 组一个小组。地点:
- 发现
countuser在一天内交付了一些东西。 - 找到
sum的number_of_papers
我使用了.agg,但我认为它不适用于这里,因为count 和sum 是关于不同的列。
df.groupby(['delivery_date','user'])['delivery_date'].agg(['count','sum']).sort_index(level=[0,1], ascending=[False,True]).reset_index(name ='Counts')
错误类型错误:此 dtype 不允许归约运算 'sum'
总和应该是number_of_papers。我不知道在 groupby 哪里写这个。
示例:
除了sum 部分之外,这一切都可以:
a.groupby(['delivery_date','user'])['delivery_date'].count().sort_index(level=[0,1], ascending=[False,True]).reset_index(name ='counts')
给予:
delivery_date user counts
0 2018-09-10 user3 1
1 2018-09-09 user3 1
2 2018-09-08 user2 1
3 2018-09-07 user1 2
我只想在此表中将number_of_papers 的sum 也作为一个名为sum 的新列。
【问题讨论】:
-
我认为您只是在第一个 groupby 语句中引用了错误的列。请改用
number_of_papers。即df.groupby(['delivery_date','user'])['number_of_papers'].agg(['count','sum']).sort_index(level=[0,1], ascending=[False,True]).reset_index()为我工作