【发布时间】:2019-07-24 12:39:22
【问题描述】:
我想在一个文件中附加两个 ASCII 文件(例如,F1_Jan_01.txt 和 F1_jan_01.txt 分别包含在目录 d01、d02 中)。事实上,我有两个目录,其中我有每个类别的文件(F1,F2,F3),月份和日期(1 到 7),我想附加具有相同名称的文件位于两个不同的目录。所以,我用 Python 编写了以下代码。
import pandas as pd
maindir1="/home/d01/"
maindir2="/home/d02/"
outdir="/home/final/"
pol=[ "F1","F2","F3" ]
month=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
for iis,ipol in enumerate(pol):
for jjs,imonth in enumerate(month):
for kk in range(1,7,1):
df1 = pd.read_csv(maindir1+str(ipol)+"_"+str(imonth)+"_0"+str(kk)+".txt", sep="\t")
df2 = pd.read_csv(maindir2+str(ipol)+"_"+str(imonth)+"_0"+str(kk)+".txt", sep="\t")
df = pd.concat([ df1, df2 ], ignore_index=True)
df.to_csv(outdir+str(ipol)+"_"+str(imonth)+"_0"+str(kk)+".txt",sep="\t",index=False)
问题是在最终输出中,当它追加第二个文件时,它没有写入第一行。例如,第一个文件(d01)有 100000 行,第二个文件(d02)有 50000 行。因此,在最终输出中正确写入前 100000 行,然后附加第二个文件的 49000 行文件不包括其第一行。
我是否必须在代码中定义其他任何内容?
【问题讨论】:
-
如果实际上你所做的只是连接文件,那么你不需要 Pandas 来做这件事!
-
尝试调用 pd.read_csv(..... , header=None)
-
为什么不将这两个文件经典地读取为 2 个字符串,然后将
read_str1 + read_str2输出到输出文件中? -
@LaurensKoppenol 我尝试添加 header=None 并正确写入文件,但它还在输出中添加了一行作为标题。
-
那么当您调用
df.to_csv时,您还包括header=False
标签: python file concatenation