如何正确修改熊猫框架

时间:2018-07-24 06:48:03

标签: python python-2.7 pandas dataframe

我有一个具有以下格式的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

有可能吗?

非常感谢

4 个答案:

答案 0 :(得分:1)

您正在使用sep=" "在每个空间分隔数据。由于E 7之间也有空格,因此它们也被分隔开了。

您需要修改测试文件并删除E7之间的空格,您将获得预期的结果。

答案 1 :(得分:1)

这是您的数据有问题。在开始尝试将其读入DataFrame之前,需要对其进行清理。编辑您的txt文件,并删除E7之间的空格

答案 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')

您将需要指定colspecswidths参数来指定每列从哪个位置开始。

如Scratch'N'Purr所述,

edit 的格式并非完全固定为