我正在使用一个 pd.Series,其中每个条目都是一个列表。我想找到该系列的模式,即该系列中最常见的列表。我试过同时使用 pandas.Series.value_counts和 pandas.Series.mode .但是,这两种方法都会导致引发以下异常:
TypeError: unhashable type: 'list'
下面是这样一个系列的一个简单例子:
pd.Series([[1,2,3], [4,5,6], [1,2,3]])
我正在寻找一个将返回 [1,2,3] 的函数。
请您参考如下方法:
您需要转换为 tuple ,然后使用 mode
pd.Series([[1,2,3], [4,5,6], [1,2,3]]).apply(tuple).mode().apply(list)
Out[192]:
0 [1, 2, 3]
dtype: object
略有改进:
list(pd.Series([[1,2,3], [4,5,6], [1,2,3]]).apply(tuple).mode().iloc[0])
Out[210]: [1, 2, 3]
因为两个应用很丑
s=pd.Series([[1,2,3], [4,5,6], [1,2,3]])
s[s.astype(str)==s.astype(str).mode()[0]].iloc[0]
Out[205]: [1, 2, 3]
