设置size()的列名

时间:2016-07-06 12:46:35

标签: pandas

我正在尝试将size()列重命名为here,如下所示:

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
...

1 个答案:

答案 0 :(得分:1)

你需要:

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