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

Pandas逐行对比两列字符串字符是否匹配(忽略分隔符和顺序)

修改判断条件的方案

你可以直接将两列的分隔符移除后对字符排序,再对比是否相等即可,原if判断修改为如下内容:

if sorted(row['colA'].replace(' ', '')) == sorted(row['colB'].replace('|', '')):

逻辑说明

  • 把colA中的空格全部删除,得到仅含待对比字符的字符串
  • 把colB中的|分隔符全部删除,得到仅含待对比字符的字符串
  • 对两个字符串的字符做排序后对比,自动忽略字符出现顺序的差异,只要字符种类和数量完全一致就会判定为匹配

修改后的完整函数

def match_or_not(df):
    for index,row in df.iterrows():
        if sorted(row['colA'].replace(' ', '')) == sorted(row['colB'].replace('|', '')):
            print ("Match for "+str(row['id']))
        else:
            print ("Not match for "+str(row['id']))

更高效的向量化实现(可选)

如果数据量较大,推荐用pandas向量化操作替代iterrows循环,性能提升更明显:

# 生成匹配结果列
df['is_match'] = df['colA'].str.replace(' ', '').apply(sorted) == df['colB'].str.replace('|', '', regex=False).apply(sorted)

# 打印结果
for _, row in df.iterrows():
    print(f"{'Match' if row['is_match'] else 'Not match'} for {row['id']}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:04