我正在使用pandas合并一些csv文件( csv文件的编号范围可以改变)。当我运行脚本时,似乎自动添加了一列和一行(如下图所示)。
我使用pandas和Python3.7,运行基于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,谢谢!
发布于 2019-05-22 00:34:25
您需要将index
和header
都设置为None
。(在我看来,这不是很直观,因为它应该是index
,而是columns
,但是你能做什么呢?)
为了防止数据中的列名重复,需要将csv文件中的列名设置为数据帧中的列名。您需要在使用read_csv
读取csv文件的for循环中编辑header
参数
for filename in L_Log:
...
df=pd.read_csv(filename,header=0, ...)
...
https://stackoverflow.com/questions/56242672
复制相似问题