You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas合并两个字符串列 去重并仅当全为others时保留该值

实现方法

你只需要在拼接去重的逻辑中增加others过滤规则即可,以下是两种可选实现方案:


方案1:基于原有代码改造

直接在你现有逻辑的基础上,对拆分后的结果过滤掉others,如果过滤后为空则返回others:

import pandas as pd

data = {'fruit1':["organge", "apple", "organge", "organge", "others"],
        'fruit2':["apple", "others", "organge", "watermelon", "others"]}
df = pd.DataFrame(data)

df["together"] = df["fruit1"] + ' ' + df["fruit2"]
df["together"] = df["together"].apply(lambda x: ' '.join([v for v in pd.unique(x.split()) if v != 'others']) or 'others')

方案2:按行处理(性能更优,可保留值的原有顺序)

直接逐行读取两个列的值处理,不需要先拼接再拆分,同时可以保证fruit1的值在前、fruit2的值在后的顺序:

def merge_fruit(row):
    valid = []
    seen = set()
    for val in [row['fruit1'], row['fruit2']]:
        if val != 'others' and val not in seen:
            valid.append(val)
            seen.add(val)
    return ' '.join(valid) if valid else 'others'

df['together'] = df.apply(merge_fruit, axis=1)

两种方案运行后都可以得到你期望的输出结果。

内容的提问来源于stack exchange,提问作者codedancer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:54:04