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

如何使用Python剥离CSV单元格冗余值仅保留locID字段

Python实现CSV位置列清洗方案

核心思路

目标位置列的单元格内容为固定三元组结构,每个[]包裹的块内第一个元素就是需要保留的locID,只需拆分每个独立块、提取locID部分、再按原格式拼接即可。如果存在格式不统一的异常数据,也可以用正则匹配做兜底处理。

具体实现步骤

  • 依赖准备:使用pandas处理CSV读写,未安装的话先执行pip install pandas
  • 编写逐单元格的内容清洗逻辑
  • 将清洗逻辑应用到目标列,导出结果文件

完整可运行代码

import pandas as pd

# 1. 读取原始CSV文件,替换为你自己的文件实际路径
df = pd.read_csv("你的原始数据文件.csv", encoding="utf-8")

def clean_location_cell(cell_val):
    # 空值直接返回,避免运行报错
    if pd.isna(cell_val):
        return cell_val
    # 拆分所有独立的[xxx]位置块
    blocks = [b.strip() for b in cell_val.split("],") if b.strip()]
    cleaned_ids = []
    for block in blocks:
        # 去除块首尾的括号,按逗号拆分取第一段即为locID
        loc_id = block.strip("[]").split(",")[0].strip()
        cleaned_ids.append(f"[{loc_id}]")
    # 拼接为要求的输出格式
    return ", ".join(cleaned_ids)

# 2. 应用清洗函数到位置列,把"位置"替换为你表中该列的实际列名
df["位置"] = df["位置"].apply(clean_location_cell)

# 3. 导出清洗完成的文件
df.to_csv("清洗完成的数据.csv", index=False, encoding="utf-8-sig")

效果验证

使用你给出的样例测试:

原始单元格内容:[locID 1, countyname, statename], [locID 2, countyname, statename]
清洗后输出:[locID 1], [locID 2]

格式异常兜底方案

如果部分单元格存在逗号数量不对、空格混乱的情况,可以用正则直接匹配locID + 数字的模式提取,将上述清洗函数替换为以下版本即可:

import re
def clean_location_cell(cell_val):
    if pd.isna(cell_val):
        return cell_val
    # 直接匹配所有locID开头的片段
    loc_ids = re.findall(r"locID\s*\d+", cell_val)
    return ", ".join([f"[{id}]" for id in loc_ids])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:39:25