繁体   English   中英

熊猫分组创建许多不同的计算列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM