我怎样才能找到频率?

我有这个数据框。如何找到 b 列中重复次数最多的 3 个数字?


import pandas as pd

import numpy as np

df = 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


月关宝盒
浏览 59回答 2
2回答

慕斯709654

使用 pandas 和 python 的组合collections.Counterfrom collections import Countera = list(dict(Counter(df.b.dropna().astype(str).str.split(',').sum()).most_common(3))                                   .keys())In [132]: aOut[132]: ['3', '2', '5']

DIEA

splitb分隔符周围的列,,然后使用explode像行一样转换列表中的每个元素,最后使用value_counts+head获取前 3 个重复元素:df['b'].dropna().astype(str).str.split(',')\ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.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',&nbsp;'2',&nbsp;'5']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python