执行pandas groupby *** 作的更快选择

执行pandas groupby *** 作的更快选择,第1张

执行pandas groupby *** 作的更快选择 脾气暴躁的
numpy.add.at
pandas.factorize

目的是要快。但是,我也尝试将其组织为易于阅读。

i, r = pd.factorize(df.name)j, c = pd.factorize(df.color)n, m = len(r), len(c)b = np.zeros((n, m), dtype=np.int64)np.add.at(b, (i, j), 1)pd.Series(c[b.argmax(1)], r)John     WhiteTom       BlueJerry    Blackdtype: object

groupby
size
idxmax
df.groupby(['name', 'color']).size().unstack().idxmax(1)nameJerry    BlackJohn     WhiteTom       Bluedtype: objectnameJerry    BlackJohn     WhiteTom       BlueName: color, dtype: object

Counter

¯_(ツ)_/¯

from collections import Counterdf.groupby('name').color.apply(lambda c: Counter(c).most_common(1)[0][0])nameJerry    BlackJohn     WhiteTom       BlueName: color, dtype: object


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5650147.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存