查找由列表组成的每行的最常见值

EMT*_*EMT 1 python list dataframe pandas

pd.DataFrame其中一列包含lists值。我想创建另一列,其中仅包含该列中最常见的值。示例数据框:

    col_1
0   [1, 2, 3, 3]
1   [2, 2, 8, 8, 7]
2   [3, 4]
Run Code Online (Sandbox Code Playgroud)

预期的数据框是

    col_1           col_2
0   [1, 2, 3, 3]    [3]
1   [2, 2, 8, 8, 7] [2, 8]
2   [3, 4]          [3, 4]
Run Code Online (Sandbox Code Playgroud)

我尝试做

from statistics import mode
df['col_1'].apply(lambda x: mode(x)) 
Run Code Online (Sandbox Code Playgroud)

但它显示了该栏中最常见的列表。

我还尝试mode直接在该列上使用 pandas 函数,它也没有帮助。有什么方法可以找到最常见的值吗?

Ker*_*mit 5

或者只是使用multimode统计模块。

df['col_2'] = df['col_1'].apply(lambda x: multimode(x))
Run Code Online (Sandbox Code Playgroud)
              col1    col2
0     [1, 2, 3, 3]     [3]
1  [2, 2, 8, 8, 7]  [2, 8]
2           [3, 4]  [3, 4]
Run Code Online (Sandbox Code Playgroud)