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

Pandas多字符串列比较并返回差异值的实现问题求助

问题解决代码
import pandas as pd

# 定义需要比较的列
compare_cols = ['col1', 'col2', 'col3', 'col4']

def get_changed(row):
    # 以第一列的值为基准值
    base_val = row.iloc[0]
    # 筛选出和基准值不同的内容并去重
    diff_values = row[row != base_val].unique()
    # 存在差异值返回第一个差异值并去掉末尾点号,否则返回空
    return diff_values[0].strip('.') if len(diff_values) > 0 else ''

# 应用函数生成Changed列
df['Changed'] = df[compare_cols].apply(get_changed, axis=1)
逻辑说明
  • 取每行第一个列的值作为基准参考值,匹配你给出的样例中差异值均为与首列不同取值的规则
  • 筛选当前行所有和基准值不同的取值后去重,无差异值时返回空
  • 提取差异值时去掉末尾的.,和你需要的输出格式完全匹配
原代码问题说明
  • 变量引用错误:函数内部使用的my_list、col1/col2等变量均未正确获取传入的行数据,属于未定义变量
  • 逻辑完全不匹配:all(col1 for i in my_list)这类写法不符合判断所有元素相等的语法,后续的条件分支也完全不符合需求逻辑
  • 参数传递错误:apply传入的行是Series类型对象,用**kwargs接收也没有正确处理取值逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:15:00