我正在使用python进行一些数据转换。我希望按组获取行数(理想情况是指count number rows with groupby pandas和How 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',然后df
与row_count
左联接将获得相同的预期结果,但是代码将变得更加混乱,步骤更多。
我在想是否有更简单,更简洁的方法链接来完成类似的任务?
欢迎任何建议和评论,谢谢!