我有一个具有以下格式的txt文件:
E 7 FF 58322 000000 300 442 1165 +67875 +29
E19 FF 58322 000000 300 302 3027 +138703 +174
E 7 FF 58322 000000 300 442 1165 +67875 +29
您可以看到第一行和第三行在第一列中有E 7
,我试图将文件读入pandas数据框,但它将E 7
识别为两个不同的列,可能使用读取E 7
陀螺仪的命令?
我已经尝试过以下命令:
data = pd.read_csv('test.txt', sep=" ")
但它返回:
E 7 FF 58322 000000 300 442 1165 +67875 +29
E19 FF 58322 0 300 302 3027 138703 174
E 7 FF 58322 000000 300 442 1165 +67875 +29
我想:
E7 FF 58322 000000 300 442 1165 +67875 +29
E19 FF 58322 000000 300 302 3027 138703 174
E7 FF 58322 000000 300 442 1165 +67875 +29
有可能吗?
非常感谢
答案 0 :(得分:1)
您正在使用sep=" "
在每个空间分隔数据。由于E 7
之间也有空格,因此它们也被分隔开了。
您需要修改测试文件并删除E
和7
之间的空格,您将获得预期的结果。
答案 1 :(得分:1)
这是您的数据有问题。在开始尝试将其读入DataFrame
之前,需要对其进行清理。编辑您的txt文件,并删除E
和7
之间的空格
答案 2 :(得分:1)
我认为您需要预处理txt文件并首先写入临时文件。
with open('test.txt', 'r') as f_in, open('temp.txt', 'w') as f_out:
for reader in f_in:
split = reader.split()
if len(split) == 10:
line = ''.join(split[0:2]) + ' ' + ' '.join(split[2:]) + '\n'
f_out.write(line)
else:
f_out.write(reader)
现在将临时文件读取到数据帧:
data = pd.read_csv('temp.txt', sep=" ", header=None)
答案 3 :(得分:0)
您的数据不是csv(或逗号“分隔值”以外的格式)文件,而是格式化为固定宽度。因此,您需要使用其他功能。
data = pd.read_fwf('./test.txt')
您将需要指定colspecs
或widths
参数来指定每列从哪个位置开始。
edit 的格式并非完全固定为