Python按组的行数并分配到新列

时间:2019-04-24 08:48:49

标签: python pandas count assign

我正在使用python进行一些数据转换。我希望按组获取行数(理想情况是指count number rows with groupby pandasHow to group and count rows by month and year using Pandas? ),然后将其作为方法链中的新列分配回数据框中。

### sample dataset
df = pd.DataFrame({'mbr_code': ['a','a','a','b','b'],
                   'value': range(2,7)})

### count number of rows by group then assign it as new column (row_count)
df_1 = (df
       .assign(row_count=lambda df: df.groupby(['mbr_code']).count())
       )

上述代码返回错误

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

预期结果为

  mbr_code  value  row_count
0        a      2          3
1        a      3          3
2        a      4          3
3        b      5          2
4        b      6          2

我现在确定它在python中如何工作,但是对于R,我可以简单地通过以下代码获取结果

library(dplyr)
df_1 <- df %>%
           group_by(mbr_code) %>%
           mutate(row_count = n())

我还有另一个备份想法,可以使用python获得相同的预期结果。步骤将是从df.groupby('mbr_code').count()计算'row_count',然后dfrow_count左联接将获得相同的预期结果,但是代码将变得更加混乱,步骤更多。

我在想是否有更简单,更简洁的方法链接来完成类似的任务?

欢迎任何建议和评论,谢谢!

0 个答案:

没有答案