如何用pd.read_csv()读取交替行文本生成两列pandas DataFrame
pandas读取交替行文本生成目标DataFrame方案
完全可以通过pd.read_csv()实现需求,且性能远高于手动逐行读取拼接,是处理这类格式文件的最优选择。
实现代码
import pandas as pd import ast # 按单列完整读取所有非空文本行,避免特殊字符导致的列错位 df = pd.read_csv( "your_file.txt", # 替换为实际文件路径 header=None, names=["raw"], skip_blank_lines=True ) # 奇偶行切片重组为两列结构 result = pd.DataFrame({ "user": df["raw"].iloc[::2].values, "fruits": df["raw"].iloc[1::2].values }) # 可选:将fruits列从字符串转为原生Python列表 result["fruits"] = result["fruits"].apply(ast.literal_eval)
输出验证
执行后得到的结果完全匹配目标格式:
user fruits 0 2022-mary ['apple', 'oranges', 'pineapple'] 1 2022-cindy ['mango', 'banana', 'berry'] 2 2022-andrew ['coconut', 'cabbage']
方案说明
- 不建议在
read_csv阶段直接拆分两列:水果列包含逗号、引号、方括号等特殊字符,强行指定分隔符极易出现列错位问题,先按单列读入全量内容再做切片重组的鲁棒性最强 - 读取过程走pandas底层C实现的解析引擎,处理大体积文件时的速度是手动
open逐行读取的数倍 - 奇偶行切片使用pandas原生索引操作,无Python层循环开销,内存占用极低
- 如果不需要将水果列转为列表对象,可删除
ast.literal_eval相关代码,读取速度会进一步提升
内容的提问来源于stack exchange,提问作者nerd
相关产品推荐
相关产品推荐

