【发布时间】:2019-05-21 16:27:22
【问题描述】:
我正在使用 pandas 来合并一些 csv 文件(csv 文件的数量范围可能会有所不同)。 当我运行脚本时,似乎自动添加了一列和一行(如下图所示)。
我在 python 3.7 中使用 pandas 并运行基于 Windows 操作系统的计算机。我使用 Excel 打开 csv 文件。
代码如下:
import os
import pandas as pd
L_Log= os.listdir('E://PJT/TEST2/')
dfList=[]
for filename in L_Log:
filename = "E://PJT/TEST2/" + filename
typefile=type(filename)
print = typefile
print(filename)
df=pd.read_csv(filename,header=None, sep = ';', error_bad_lines=False, encoding="ANSI")
#df[1:] = [test[1:] for test in df[1:]]
dfList.append(df)
concatDf=pd.concat(dfList,axis=0)
concatDf.to_csv('Concat2.csv', sep = ';')
我得到的结果如图所示,用excel突出显示的是我所期望的:Picture
感谢您的帮助!
更新: 我稍微更改了代码:我在添加列标题时删除了该部分,并添加了一个
concatDf.to_csv('Concat2.csv', sep = ';',index=False)
这是完整的新脚本:
import os
import pandas as pd
L_Log= os.listdir('.')
L_LogClean=[]
'''
for k in range(len(L_Log)):
if 'Logfile_' in L_Log[k]:
Tempo = L_Log[k]
Tempo2 = Tempo[12:16]+Tempo[10:12]+Tempo[8:10]
Tempo2 = int(Tempo2)
L_LogClean.append(Tempo2)
L_LogClean = sorted(L_LogClean)
for k in range(len(L_LogClean)):
Tempo = str(L_LogClean[k])
Tempo2 = 'Logfile_' + Tempo[6:8]+Tempo[4:6]+Tempo[0:4]+'.csv'
L_LogClean[k] = Tempo2
print(L_LogClean)
'''
dfList=[]
colnames=['No.','Date','Time','Temp1','Unit','Temp2','Unit','Lux2','Unit','BP1','Humidité Relat','Unit','CO2','Unit','Présence','Temp1_EnO','Unit','Temp2_EnO','Unit','Temp3_EnO','Unit','RH3_EnO','Unit','Chauffage']
for filename in L_Log:
filename = "E://PJT/TEST2/" + filename
typefile=type(filename)
print = typefile
print(filename)
df=pd.read_csv(filename,header=None, sep = ';', error_bad_lines=False, encoding="ANSI")
#df[1:] = [test[1:] for test in df[1:]]
dfList.append(df)
concatDf=pd.concat(dfList,axis=0)
#concatDf.columns=colnames
concatDf.to_csv('Concat2.csv', sep = ';',index=False)
现在文件看起来是正确的,但是:它为每个文件添加了列的名称(显然我只是希望第一行显示列的标题) 这是我得到的一个例子:What I get 谢谢!
【问题讨论】:
-
concatDf.to_csv('Concat2.csv', sep = ';',index=False) -
它帮助了我:我对自动添加到合并文件中的每个文件的列名有问题
标签: python python-3.x pandas csv concatenation