首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >pandas会自动在第一个位置添加一行和一列吗?

pandas会自动在第一个位置添加一行和一列吗?
EN

Stack Overflow用户
提问于 2019-05-22 00:27:23
回答 1查看 185关注 0票数 0

我正在使用pandas合并一些csv文件( csv文件的编号范围可以改变)。当我运行脚本时,似乎自动添加了一列和一行(如下图所示)。

我使用pandas和Python3.7,运行基于windows操作系统的计算机。我使用Excel打开csv文件。

代码如下:

代码语言:javascript
复制
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

感谢您的帮助!

更新:我稍微修改了代码:我删除了添加专栏标题时的部分,并添加了一个

代码语言:javascript
复制
concatDf.to_csv('Concat2.csv', sep = ';',index=False)

下面是完整的新脚本:

代码语言:javascript
复制
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,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-05-22 00:34:25

您需要将indexheader都设置为None。(在我看来,这不是很直观,因为它应该是index,而是columns,但是你能做什么呢?)

为了防止数据中的列名重复,需要将csv文件中的列名设置为数据帧中的列名。您需要在使用read_csv读取csv文件的for循环中编辑header参数

代码语言:javascript
复制
for filename in L_Log:
    ...
    df=pd.read_csv(filename,header=0, ...)
    ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56242672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档