纯Pandas实现文本文件转DataFrame 能否使用read_csv方法
仅使用Pandas
read_csv 实现二进制文本逐位转DataFrame方案 完全可以不依赖Python原生文件读取、列表处理逻辑,仅通过Pandas内置方法实现需求,核心思路是先将每行完整二进制串读取为单列字符串,再通过Pandas内置的字符串拆分方法逐位拆分为多列。
实现代码
import pandas as pd # 读取文件为单列字符串格式 df = pd.read_csv( "data.txt", header=None, dtype=str, sep=r"\Z", engine="python" ) # 逐字符拆分二进制串,得到目标多列结构 df = df[0].str.split(pat="", expand=True).iloc[:, 1:-1]
参数说明
header=None:指定文件无表头,避免首行数据被识别为列名dtype=str:强制以字符串类型读取内容,防止数值类型自动丢弃前导0sep=r"\Z"+engine="python":使用行尾正则作为分隔符,保证整行二进制串被完整读取为单列,不会被默认分隔符拆分.str.split(pat="", expand=True):调用Pandas字符串方法,将每个二进制串按单个字符拆分,expand=True参数直接将拆分结果展开为多列结构.iloc[:, 1:-1]:剔除空字符串拆分产生的首尾两列空值,最终得到5列对应5个二进制位的结果
运行上述代码得到的DataFrame结构、值和目标格式完全一致。
如果不限制必须用
read_csv,也可以用Pandas内置的固定宽度读取方法pd.read_fwf("data.txt", header=None, widths=[1]*5, dtype=str),不需要额外处理就能直接得到目标结果。
内容的提问来源于stack exchange,提问作者Suraj Kothari
相关产品推荐
相关产品推荐

