如何删除txt文件的标题行,然后在数据框上工作,再次在输出文件中返回标题行

时间:2019-04-21 00:22:16

标签: python pandas

我有一个包含10行作为标题的文件,实际上第11行是列名。我知道如何摆脱使用数据框的行,使用:

df = pd.read_csv(inputfile, delimiter = "\t", skiprows=10)

但是我想带回它们并将标头粘贴到输出文件中。

输入文件:

[Header]
APT Version     1.9.4
Processing Date 12/18/2018 11:35 AM
Content         MMMM
Num col        64
Total rows      642
Num Samples     350
Total Samples   350
File    93 of 350
[Data]
Name     Sample    col1    col2    col3        
1002         SPP           2       3   0.2573

1 个答案:

答案 0 :(得分:0)

由于看起来您的数据框部分正常工作,因此,如果要将前10行从输入文件复制到输出文件,只需快速阅读即可。您可以使用readline()函数而不是read()来避免意外消化整个文件。使用列表推导作为hack可以使您控制要使用的行数。在这种情况下,我们将借助range(10)作为迭代计数器来读取10行。使用上下文管理器(with),您在重新读取数据框时就不必担心文件访问问题。

with open('inputfile.tsv') as f:
    header = [f.readline() for i in range(10)]

理解力与下面的代码相同,只是扫描起来容易得多,理解力比循环工作得更快。

# don't actually do it this way
header = []
with open('inputfile.tsv') as f:
    for i in range(10):
        header.append(f.readline())

当准备好输出文件时,只需将各行连接在一起,然后再打印数据。如果在df.to_csv()函数中省略文件处理程序,它将返回字符串。您可以立即在标题下方打印出数据

with open('output.txt', 'w') as f:
    f.write("".join(header))
    f.write(df.to_csv())