您可以使用
pd.Series.mode并提取第一个值:
res = s.mode().iloc[0]
这不一定是低效率的。与往常一样,对您的数据进行测试以查看适合的数据。
import numpy as np, pandas as pdfrom scipy.stats.mstats import modefrom collections import Counternp.random.seed(0)s = pd.Series(np.random.randint(0, 100, 100000))def jez_np(s): _, idx, counts = np.unique(s, return_index=True, return_counts=True) index = idx[np.argmax(counts)] val = s[index] return valdef pir(s): i, r = s.factorize() return r[np.bincount(i).argmax()]%timeit s.mode().iloc[0] # 1.82 ms%timeit pir(s) # 2.21 ms%timeit s.value_counts().index[0] # 2.52 ms%timeit mode(s).mode[0] # 5.64 ms%timeit jez_np(s) # 8.26 ms%timeit Counter(s).most_common(1)[0][0] # 8.27 ms
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)