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

spl*_*ter 1 python list series dataframe pandas

我正在处理pd.Series每个条目都是列表的位置.我想找到该系列的模式,即本系列中最常见的列表.我尝试过使用pandas.Series.value_countspandas.Series.mode.但是,这两种方法都会导致以下异常:

TypeError:不可用类型:'list'

这是一个这样一个系列的简单例子:

pd.Series([[1,2,3], [4,5,6], [1,2,3]])
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个将返回的功能[1,2,3].

WeN*_*Ben 5

您需要转换为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
Run Code Online (Sandbox Code Playgroud)

略有改进:

list(pd.Series([[1,2,3], [4,5,6], [1,2,3]]).apply(tuple).mode().iloc[0])
Out[210]: [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

因为两个申请是丑陋的

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]
Run Code Online (Sandbox Code Playgroud)

  • 我觉得烦人的是没有解释的downvotes.:( (2认同)