我有一个包含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
答案 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())