如何用Pandas、Numpy清洗单行长脏CSV数据集并拆分列
处理单行逗号分隔数据为结构化CSV(Pandas实现)
核心思路
将单行逗号分隔的字符串拆分为对应字段,结合预设列名生成结构化DataFrame,最终导出为标准CSV文件。
具体步骤及代码
- 读取原始单行数据
从TXT文件读取唯一一行内容,去除首尾空白字符:
import pandas as pd import csv from io import StringIO # 读取原始TXT文件的单行数据 with open('raw_airlines.txt', 'r', encoding='utf-8') as f: raw_line = f.read().strip()
- 安全拆分字段
使用csv模块处理带引号的分隔符(避免像"Air China, Ltd"这类含逗号的字段被错误拆分):
# 模拟CSV读取器拆分单行数据 reader = csv.reader(StringIO(raw_line)) data_fields = next(reader)
- 生成结构化DataFrame并导出CSV
结合预设列名构造DataFrame,检查字段数量匹配后导出:
# 预设列名 cols = ['AIRLINE_ID','AIRLINE_NAME','ALIAS','IATA','ICAO','CALLSIGN','COUNTRY','ACTIVE'] # 校验字段数量与列名数量一致 if len(data_fields) == len(cols): # 构造DataFrame df = pd.DataFrame([data_fields], columns=cols) # 导出为CSV(不保留索引) df.to_csv('cleaned_airlines.csv', index=False, encoding='utf-8') else: print("错误:数据字段数量与列名数量不匹配,请检查原始数据")
可选优化
- 字段类型转换:将ID等数值型字段转为数字格式
df['AIRLINE_ID'] = pd.to_numeric(df['AIRLINE_ID'], errors='coerce') - 缺失值处理:对空字段填充默认值
df = df.fillna('N/A')
内容的提问来源于stack exchange,提问作者Ido Kobi
相关产品推荐
相关产品推荐

