我有一个 Dataframe 。我想按行对一些列进行分组,然后形成一个计数列,然后获得计数的最大值,为它创建一个列,并将其附加到 Dataframe 。
我试过:
df["max_pred"] = df.groupby(['fid','prefix','pred_text1'],
sort=False)["pred_text1"].transform("max")
但是,它列出了pred_text1
具有最大重复次数的行,但我需要它的修复次数
例如:
A B C
a d b
a d b
a d b
a d a
a d a
b b c
b b c
b b d
如果我将行按A和B分组,然后计算C,得到每组的最大值,并将其存储在新的列F中,我期望:
A B F E
a d 3 b
a d 3 b
a d 3 b
a d 3 b
a d 3 b
b b 2 c
b b 2 c
b b 2 c
E显示频率在F中指定的最频繁项目
2条答案
按热度按时间cu6pst1q1#
您可以将
groupby.transform
与value_counts
一起使用:collections.Counter
的变体:输出:
更新
我在这里使用
merge
:输出:
lf5gs5x22#
另一种选择是使用
get_dummies
;对于足够大的数据,我希望@mozway的解决方案能够更好地扩展: