Pandas处理CSV时字符串分隔错位、列表join操作报错求解
解决方案
分隔符错位问题修复
核心逻辑为通过正则匹配清除字母之间的错误分隔符,先拼接破碎的完整单词,再统一分隔符格式:
- 匹配规则:单个英文字母后紧跟
|/,且后一位仍是英文字母的场景,直接删除中间的分隔符 - 额外处理:清除连续冗余的分隔符、首尾多余分隔符,统一将单词分隔符转为
|
代码逻辑与join问题修复
原代码核心问题:
intersect1被定义为字符串类型,直接将列表转字符串拼接后结构异常,无法执行join操作- 最终转DataFrame时将字符串拆分为单个字符,输出结果不符合预期
修改逻辑:
- 将
intersect1定义为列表,存储每行计算得到的交集结果 - 每行交集计算完成后先执行
|拼接,再存入列表,最终直接生成DataFrame即可
完整代码
import pandas as pd import re # 分隔符修复辅助函数 def fix_separator(raw_str): # 替换字母之间的|或,,拼接破碎单词 fixed = re.sub(r'([a-zA-Z])[|,](?=[a-zA-Z])', r'\1', str(raw_str)) # 把连续的|或,统一替换为单个| fixed = re.sub(r'[|,]+', r'|', fixed) # 清除首尾的分隔符 fixed = fixed.strip('|,') return fixed data = pd.read_csv('data.csv') # 初始化结果存储列表 intersect_result = [] for j in range(len(data)): # 处理第一列内容 x = fix_separator(data.iloc[j, 1]) x_list = x.split("|") # 处理第二列内容 y = fix_separator(data.iloc[j, 2]) y_list = y.split("|") # 计算交集 intersect = list(set(x_list) & set(y_list)) # 拼接为|分隔的字符串存入结果列表 intersect_result.append("|".join(intersect)) # 生成DataFrame并导出 df3 = pd.DataFrame(intersect_result, columns=['intersect_content']) df3.to_csv('intersect1.csv', index=False)
内容的提问来源于stack exchange,提问作者d12
相关产品推荐
相关产品推荐

