我有一个如下的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')