在 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')
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')})
我的数据是这样的
同一个用户可以有多个班次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')
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')})