Python 如何删除txt文件的头行,然后处理dataframe,再次在输出文件中返回头行
我有一个标题为10行的文件,实际上第11行是列名。我知道如何使用以下方法去除数据帧中的行: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
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()
函数。