Pandas 比较 3 列,如果计数大于 1 则输出结果

Jim*_*mmy 3 python dataframe pandas

我有 3 列的值是 A、B 或 C 我想比较这 3 列并给出哪个值的输出超过 1 个计数。如果计数为平局,则输出将为“-”

输入:

    | col1  | col2  | col3  |
    |-------|-------|-------|
    | A     | A     | B     |
    | A     | B     | B     |
    | C     | B     | C     |
    | A     | B     | C     |
Run Code Online (Sandbox Code Playgroud)

输出:

    | col1  | col2  | col3  | Result|
    |-------|-------|-------|-------|
    | A     | A     | B     | A     |
    | A     | B     | B     | B     |
    | C     | B     | C     | C     |
    | A     | B     | C     | -     |
Run Code Online (Sandbox Code Playgroud)

Shu*_*rma 5

让我们尝试Counter获取最常见的元素:

from collections import Counter

def most_common():
    for s in df.to_numpy():
        k, v = Counter(s).most_common(1)[0] 
        yield '-' if v == 1 else k

df['Result'] = list(most_common())
Run Code Online (Sandbox Code Playgroud)
  col1 col2 col3 Result
0    A    A    B      A
1    A    B    B      B
2    C    B    C      C
3    A    B    C      -
Run Code Online (Sandbox Code Playgroud)