Skip to main content
 首页 » 编程设计

python之查找由 Pandas 中的列表元素组成的系列的模式

2025年05月04日14bjzhanghao

我正在使用一个 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]