我有这个数据框。如何找到 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 回答
![?](http://img1.sycdn.imooc.com/545862120001766302200220-100-100.jpg)
慕斯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']
![?](http://img1.sycdn.imooc.com/54584dd900014f6c02200220-100-100.jpg)
DIEA
TA贡献1820条经验 获得超2个赞
split
b
分隔符周围的列,
,然后使用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']
添加回答
举报
0/150
提交
取消