Pandas 创建一个新列,它采用给定项目代码的最常见项目描述

Pandas Create a new Column which takes the Most Frequent item Description given Item Codes

我有一个看起来像这样的数据框:

Group UPC Description
246 1234568 Chips BBQ
158 7532168 Cereal Honey
246 9876532 Chips Ketchup
665 8523687 Strawberry Jam
246 1234568 Chips BBQ
158 5553215 Cereal Chocolate

我想根据组 # 或第一个实例(如果有平局)用最频繁的描述替换项目的描述。

所以在上面的例子中:Chips Ketchup(1 个实例)被 Chips BBQ(2 个实例)替换,Cereal Chocolate 被 Cereal Honey(第一个实例)替换。

期望的输出是:

Group UPC Description
246 1234568 Chips BBQ
158 7532168 Cereal Honey
246 9876532 Chips BBQ
665 8523687 Strawberry Jam
246 1234568 Chips BBQ
158 5553215 Cereal Honey

如果这太复杂,我可以简单地用第一个实例替换,根本不考虑频率。

提前致谢

您可以使用

df['Description'] = df.groupby('Group')['Description'].transform(lambda s: s.value_counts().index[0])

似乎 Series.value_counts(与我也尝试过的 Series.mode 不同)对第一次出现时出现相同次数的元素进行排序。此行为未记录在案,因此我不确定您是否可以信赖它。