Pandas:我如何得到一列组计数来填充组中的每一行?

2024-05-13 07:29:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以用组计数成功地填充我的新列,但我怀疑有一种更简单的方法:

# How do I simplify this?

def f(gr):

    return pd.Series([gr['class_name'].count()] * gr.shape[0], index=gr.index)

df['class_size'] = df.groupby("class_name").apply(f).reset_index(level=0, drop=True)
column_list = ['class_name', 'class_size']
df[column_list].head(5)

获取:

This is just the first few rows of data - see how the same class name has the same class count?


Tags: 方法namedfsizeindexdefcolumnsimplify
2条回答

我想你需要^{}

df['class_size'] = df.groupby('class_name')['class_name'].transform('size')

或:

df['class_size'] = df.groupby('class_name')['class_name'].transform('count')

What is the difference between size and count in pandas?

根据您的数据帧形状,您也可以只对groupby进行计数:

import pandas as pd
df = pd.DataFrame({'class names':list('abracadabra'),'class count':1})
df.groupby('class names').count().reset_index()

相关问题 更多 >