将未对齐的 .txt 文件读取到 pd 数据帧

问题描述 投票:0回答:1

我正在尝试将数字数据从 .txt 读取到 pandas 数据帧,但它需要一些争论。有些行未对齐(我认为是制表符)

数据片段(粘贴表格实际上使其看起来对齐): .txt dataset with mixed alignment

现在的工作只是删除未对齐的行,但这是一个小数据集,我想保留每一行。 代码:

df = pd.read_table('path/file.txt', on_bad_lines='skip', header=None)
df

输出:

    0
0   15.26\t14.84\t0.871\t5.763\t3.312\t2.221\t5.22\t1
1   14.88\t14.57\t0.8811\t5.554\t3.333\t1.018\t4.9...
2   14.29\t14.09\t0.905\t5.291\t3.337\t2.699\t4.82...

使用 read_table 而不跳过坏行会返回: 'ParserError:标记数据时出错。 C 错误:第 8 行预计有 8 个字段,结果看到 10'

我尝试重写 .txt 以用单个空格(或逗号)替换制表符,并尝试使用特定分隔符读取新文件,但这让我回到了 ParserError (策略灵感来自于在整个文本文件 python 中将 Tab 替换为空格)。

inputFile = open('path/file.txt', 'r') # read mode
exportFile = open('path/file_v1.txt', 'w') # write mode
for line in inputFile:
   new_line = line.replace('\t', ',')
   exportFile.write(new_line)

inputFile.close()
exportFile.close()

(PS。Python初学者,第一个StackOverflow问题。如果我错过了一些发帖约定,请提前表示感谢和抱歉)

python pandas dataframe delimiter txt
1个回答
0
投票

您可以使用

sep='\s+'
参数来指定如何拆分数据。这意味着每一列都由一个或多个空格分隔。 尝试:

df = pd.read_table('path/file.txt', header=None, sep='\s+') # or sep='\t+'

© www.soinside.com 2019 - 2024. All rights reserved.