Python 如何删除txt文件的头行,然后处理dataframe,再次在输出文件中返回头行

Python 如何删除txt文件的头行,然后处理dataframe,再次在输出文件中返回头行,python,pandas,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 row

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

因为看起来dataframe部分工作正常,如果要将输入文件的前10行复制到输出文件,只需快速阅读即可。您可以使用
readline()
函数而不是
read()
,这样您就不会意外地消化整个文件。使用列表理解作为一种技巧,可以控制要使用的行数。在本例中,我们在
range(10)
作为迭代计数器的帮助下读取10行。使用上下文管理器(),在读取数据帧时不必担心文件访问问题

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())

您在获取数据部分时是否遇到问题,或者您是说您只是需要帮助将输入文件的前10行传输到输出文件?我只想在不更改输出文件的情况下传输输入文件的前10行,我删除了前10行并处理主数据,现在我想让前10行加上已更改的主数据只读取前10行,将它们保存在变量中,然后在准备写入输出时将其吐出。请参阅下面的答案。我使用pandas“pd.read_csv”读取前10行并将其保存为数据帧,但我无法将此df与输出文件中的主分析df连接起来,pandas中是否有任何方法?是否需要对前10行进行任何处理?如果没有,我建议用最简单的方式阅读,如上图所示。Pandas是一个很棒的工具,我喜欢使用它,希望全世界都知道它有多棒,但这并不意味着它是解决每个问题的最佳解决方案。您使用的是
pd.to_csv()
,而您不知道如何将标题信息放入由
pd.to_csv()
生成的文件中吗?是的,我使用“header=pd.read_csv(inputfile,header=None,nrows=10)”读取标题信息,但我不知道如何使用pd.to_csv()将标题信息和主要数据输出,你有什么建议吗?我有!几分钟前我更新了我的答案。只是不要将文件名传递到
df.to_csv()
。它将以字符串形式返回输出,您可以将其传递给
f.write()
函数。