如何将特定格式的文本文件转换为Pandas DataFrame?
竖线分隔文本转Pandas DataFrame的解决方法
一、修正CSV读取代码(推荐)
你的问题核心是pd.read_csv()的参数配置错误,只要指定正确的分隔符、引号规则,就能直接生成符合要求的DataFrame:
import pandas as pd # 读取文件,关键参数配置 df = pd.read_csv( "your_file.txt", sep="|", # 指定竖线为分隔符 quotechar='"', # 识别双引号包裹的字段 usecols=lambda col: col.strip() != "", # 过滤末尾空列 skipinitialspace=True # 自动跳过分隔符后的空格(可选,增强兼容性) )
参数说明:
sep="|":明确告诉Pandas用竖线分割列quotechar='"'::自动去除字段两端的双引号,比如把"FACT"转为FACTusecols:因为每行末尾的|会生成空列,用这个参数过滤掉无效空列skipinitialspace:如果文本里分隔符后有空格,会自动忽略,避免列值带空格
二、手动处理文本(自定义场景)
如果需要更灵活的处理逻辑,可以手动读取并解析文本:
import pandas as pd # 读取文件并过滤空行 with open("your_file.txt", "r") as f: lines = [line.strip() for line in f if line.strip()] # 提取并清洗列名 columns = [col.strip('"') for col in lines[0].split("|") if col.strip()] # 处理每行数据,转换对应类型 data_rows = [] for line in lines[1:]: # 分割后过滤空元素,处理引号和数据类型 row_values = [] for val in line.split("|"): val = val.strip() if not val: continue # 去掉字符串两端的引号,数字转成int类型 if val.startswith('"'): row_values.append(val.strip('"')) elif val.isdigit(): row_values.append(int(val)) else: row_values.append(val) data_rows.append(row_values) # 构建DataFrame df = pd.DataFrame(data_rows, columns=columns)
内容的提问来源于stack exchange,提问作者Pratik
相关产品推荐
相关产品推荐

