首页 > 解决方案 > 向 df 添加一列,其中包含 df 中不同列的值的计数?

问题描述

我在下面有一个df:

Day 
Morning
Day
Night 
Night
Day
Morning
Day
Day 

此 df 中还有其他列,并且不仅包含上述列

当我运行以下代码时:

df.groupby('day').count()

它输出一个 df,其中包含 day 列的每个值在 df 的其他列中出现的次数(对于 day 列中的每个值,它的计数相同)

如何创建一个新列,列出 Day 列的每个值的相同计数?

预期输出:

 Day     New_Col
Morning    2
Day        4
Night      2
Night      2
Day        4
Morning    2
Day        4
Day        4

谢谢!

标签: pythonpython-3.xpandasdataframepandas-groupby

解决方案


transform()如果要映射回来,请使用:

df['New_Col'] = df.groupby('Day')['Day'].transform('count')

或者您可以使用map, 以及value_counts():

df['New_Col'] = df['Day'].map(df['Day'].value_counts())

输出:

       Day  New_Col
0  Morning        2
1      Day        4
2    Night        2
3    Night        2
4      Day        4
5  Morning        2
6      Day        4
7      Day        4

推荐阅读