我有這個數據框。如何找到 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']
DIEA
TA貢獻1820條經驗 獲得超3個贊
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']
添加回答
舉報
0/150
提交
取消
