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

Python使用pandas处理CSV两列分隔数据求交集返回空列表原因排查

问题原因
  • 核心逻辑错误:遍历行时选取了整列数据而非当前行的单元格值。代码中data.iloc[:, 2]的冒号代表选择所有行的第三列(索引从0开始计数),你是把整列的内容整体转成字符串再分割,完全不是目标行的单元格内容,自然无法得到正确交集。
  • 潜在匹配问题:未处理单词可能存在的首尾空格,若原始单元格内存在dog | cat这类带空格的格式,直接分割后会出现带空格的单词,导致匹配失败。
修正后代码
import pandas as pd

data = pd.read_csv('data.csv')
intersect1 = []
    
for j in range(len(data)):
    # 取当前j行的第3、4列单元格值,分割后去除每个元素的首尾空格
    x = [word.strip() for word in str(data.iloc[j, 2]).split("|")]
    y = [word.strip() for word in str(data.iloc[j, 3]).split("|")]  
    # 求交集后用|拼接成要求的格式
    intersect = "|".join(list(set(x) & set(y)))
    intersect1.append(intersect)
    
print(intersect1)

如果需要保留列表嵌套的格式,不需要拼接成字符串,把"|".join()去掉即可。

可选优化写法(不用循环,pandas向量化处理效率更高)
def get_intersect(row):
    x = [w.strip() for w in str(row[2]).split("|")]
    y = [w.strip() for w in str(row[3]).split("|")]
    return "|".join(set(x) & set(y))

data['intersect'] = data.apply(get_intersect, axis=1)
print(data['intersect'].tolist())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:48:03