向df添加一列,该列包含df中不同列的值的计数



我有一个如下的df:

Day 
Morning
Day
Night 
Night
Day
Morning
Day
Day 

这个df中还有其他列,并且不仅包含上面的列

当我运行以下代码时:

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

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

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

预期输出:

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

谢谢!

如果要映射回,请使用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

使用df.groupby.transform('size'):

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

相关内容

最新更新