为了账号安全,请及时绑定邮箱和手机立即绑定

我怎样才能找到频率?

我怎样才能找到频率?

月关宝盒 2023-10-18 21:18:24
我有这个数据框。如何找到 b 列中重复次数最多的 3 个数字?import pandas as pdimport numpy as npdf = pd.DataFrame({"a": [1,2,2,4,2,3], "b": [np.nan, np.nan, '2,3', 3, '3,5,1',2]})我猜答案应该是3,2,5或者3,2,1
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

使用 pandas 和 python 的组合collections.Counter


from collections import Counter


a = list(dict(Counter(df.b.dropna().astype(str).str.split(',').sum()).most_common(3))

                                   .keys())


In [132]: a

Out[132]: ['3', '2', '5']


查看完整回答
反对 回复 2023-10-18
?
DIEA

TA贡献1820条经验 获得超2个赞

splitb分隔符周围的列,,然后使用explode像行一样转换列表中的每个元素,最后使用value_counts+head获取前 3 个重复元素:

df['b'].dropna().astype(str).str.split(',')\
       .explode().value_counts().head(3).index.tolist()

explode在 pandas version >= 中可用0.25,对于 pandas version <0.25使用:

pd.value_counts(np.hstack(df['b'].dropna().astype(str).str.split(','))).head(3).index.tolist()

['3', '2', '5']


查看完整回答
反对 回复 2023-10-18
  • 2 回答
  • 0 关注
  • 56 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信