为size()设置列名

斯蒂芬·福克(Stefan Falk)

我试图重新命名size(),如图列在这里是这样的:

x = monthly.copy()

x["size"] = x\
      .groupby(["sub_acct_id", "clndr_yr_month"]).transform(np.size)

但是我得到的是

ValueError: Wrong number of items passed 15, placement implies 1

为什么这不适用于我的数据框?


如果我简单地打印副本:

x = monthly.copy()
print x

这是表格的样子:

sub_acct_id  clndr_yr_month
12716D       201601             219
             201602             265
12716G       201601             221
             201602             262
12716K       201601             181
             201602             149
...

我试图完成的是设置列的名称:

sub_acct_id  clndr_yr_month     size
12716D       201601             219
             201602             265
12716G       201601             221
             201602             262
12716K       201601             181
             201602             149
...
耶斯列尔

你需要:

x["size"] = x.groupby(["sub_acct_id", "clndr_yr_month"])['sub_acct_id'].transform('size')

样本:

df = pd.DataFrame({'sub_acct_id': ['x', 'x', 'x','x','y','y','y','z','z']
                , 'clndr_yr_month': ['a', 'b', 'c','c','a','b','c','a','b']})
print (df)
  clndr_yr_month sub_acct_id
0              a           x
1              b           x
2              c           x
3              c           x
4              a           y
5              b           y
6              c           y
7              a           z
8              b           z

df['size'] = df.groupby(['sub_acct_id', 'clndr_yr_month'])['sub_acct_id'].transform('size')
print (df)
  clndr_yr_month sub_acct_id  size
0              a           x     1
1              b           x     1
2              c           x     2
3              c           x     2
4              a           y     1
5              b           y     1
6              c           y     1
7              a           z     1
8              b           z     1

聚合输出的另一种解决方案:

df = df.groupby(['sub_acct_id', 'clndr_yr_month']).size().reset_index(name='Size')
print (df)
  sub_acct_id clndr_yr_month  Size
0           x              a     1
1           x              b     1
2           x              c     2
3           y              a     1
4           y              b     1
5           y              c     1
6           z              a     1
7           z              b     1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章