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

我有 3 列,其值为 A、B 或 C 我想比较这 3 列并给出其中值计数超过 1 的输出。如果计数相等则输出将为“-”


输入:


    | col1  | col2  | col3  |

    |-------|-------|-------|

    | A     | A     | B     |

    | A     | B     | B     |

    | C     | B     | C     |

    | A     | B     | C     |

输出:


    | col1  | col2  | col3  | Result|

    |-------|-------|-------|-------|

    | A     | A     | B     | A     |

    | A     | B     | B     | B     |

    | C     | B     | C     | C     |

    | A     | B     | C     | -     |


慕雪6442864
浏览 81回答 2
2回答

烙印99

让我们尝试Counter获取最常见的元素:from collections import Counterdef most_common():    for s in df.to_numpy():        k, v = Counter(s).most_common(1)[0]         yield '-' if v == 1 else kdf['Result'] = list(most_common())  col1 col2 col3 Result0    A    A    B      A1    A    B    B      B2    C    B    C      C3    A    B    C      -

慕侠2389804

如果性能不是一个大问题,您可以编写一个按行方法返回出现多次的值:def appear_more_than_once(s):    cnt = s.value_counts()    if len(cnt) > 0 and cnt.iloc[0] > 1:        return cnt.index[0]    else:        return '-'        df['Result'] = df.apply(appear_more_than_once, axis=1)print(df)#  col1 col2 col3 Result#0    A    A    B      A#1    A    B    B      B#2    A    B    C      -https://uscript.co/public/Google_108617488638529745626/python/4e5d36bc.py
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python