如何删除 txt 文件的标题行,然后处理数据帧,再次返回输出文件中的标题行



我有一个有 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

由于看起来数据帧部分工作正常,如果要将输入文件中的前 10 行复制到输出文件,只需快速读取即可。您可以使用readline()函数而不是read()这样您就不会意外消化整个文件。使用列表理解作为黑客可以让你确定你想使用多少行。在本例中,我们在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())

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

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

最新更新