在 pandas 上对唯一列值应用计数器

Applying counter on pandas on unique columns values

我的数据是这样的

同一个用户可以有多个班次ID。所以在 nurse_id 列中我有重复的 ID。

我想在 new_state 上为唯一护士创建计数器。

目前我做的时候

Counter(df["new_stat"])

给出

Counter({'D': 15123, 'R': 29300, 'not_active': 2581, 'N': 21455})

但它也会计算 ID 的重复值。

如何在 new_stat 上为唯一 nurse_id 创建计数器?

Pandas 解决方案是 SeriesGroupBy.value_counts:

df.groupby('nurse_id')['new_stat'].value_counts().reset_index(name='count')

DataFrameGroupBy.size:

df.groupby(['nurse_id','new_stat']).size().reset_index(name='count')

如果需要每个组的计数器对象是可能的,请使用带有 Series 构造函数的字典理解:

pd.Series({k: Counter(v['new_stat']) for k, v in df.groupby('nurse_id')})