[英]Pandas groupby creating many different computed columns
我有以下问题:给定ID信息数据框:
id items date
0 1 3 2019-01-22
1 1 1 2018-05-01
2 1 2 2019-03-31
3 2 2 2018-12-12
4 2 1 2018-11-26
5 2 3 2018-05-16
6 3 1 2019-01-03
7 3 4 2018-11-22
8 3 3 2018-09-11
我想按“ id”分组,但我需要各种指标-最新日期,最早日期,项目总数,自年初以来的项目总数等等。
我可以通过对每个指标执行一个groupby(或使用agg获取两个不同的列),然后将其加入第一个groupby来单独获取-我想知道是否存在类似agg的方法,以便根据“项目”和“日期”。 结果将是这样的:
items latest date earliest_date items_this_year
id
1 6 2019-03-31 2018-02-01 5
2 6 2018-12-12 2018-05-16 0
3 8 2019-01-03 2018-09-11 1
有没有熊猫函数可以让我们为每列或其他内容设置一个函数?
使用groupby
+ agg
检查,对于2019年的Item,您可能仍需要单独进行
s2=df.loc[df.date.dt.year==2019].groupby('id').items.sum()
s=df.groupby('id').agg({'items':'sum','date':['max','min']})
s.columns=s.columns.map('_'.join)
s['Item_2019']=s2
s.reset_index(inplace=True)
s
Out[718]:
id items_sum date_max date_min Item_2019
0 1 6 2019-03-31 2018-05-01 5.0
1 2 6 2018-12-12 2018-05-16 NaN
2 3 8 2019-01-03 2018-09-11 1.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.