首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个csv文件加载到Dataframe:列名问题

将多个csv文件加载到Dataframe:列名问题
EN

Stack Overflow用户
提问于 2017-11-13 06:10:27
回答 1查看 289关注 0票数 1

我有多个相同格式的csv文件(14行4列)。我尝试将它们全部加载到一个dataFrame中,并使用文件名重命名第一列(1-14)的值。

代码语言:javascript
复制
    1   500 0   0
    2   350 0   1
    3   500 1   0
    .............
    13  600 0   0
    14  800 0   0

我尝试了以下代码,但没有得到我期望的结果:

代码语言:javascript
复制
    filenames = os.listdir('Threshold/')
    Y = pd.DataFrame () #empty df
    # file name are in the following foramt "subx_ICA_thre.csv"
    # need to get x (subject number to be used later for renaming columns values)
    Sub_list=[]
    for filename in filenames:
    s= int(''.join(filter(str.isdigit, filename)))
    Sub_list.append(int(s))
    S_Sub_list= sorted(Sub_list) 

    for x in S_Sub_list: # get the file according to the subject number
    temp = pd.read_csv('sub' +str(x)+'_ICA_thre.csv' )
    df = pd.concat([Y, temp])  # concat the obtained frame with the empty frame
    df.columns = ['id', 'data', 'isEB', 'isEM']
    #  replace the column values using subject id
         for sub in range(1,15):
           df['id'].replace(sub, 'sub' +str(x)+'_ICA_'+str(sub) ,inplace=True)
    print (df)

产出:

代码语言:javascript
复制
                id  data  isEB  isEM
   0    sub1_ICA_2   200     0     0
   1    sub1_ICA_3   275     0     0
   2    sub1_ICA_4   500     1     0
   ................................
   11  sub1_ICA_13   275     0     0
   12  sub1_ICA_14   300     0     0
                id  data  isEB  isEM
   0    sub2_ICA_2   275     0     0
   1    sub2_ICA_3   500     0     0
   2    sub2_ICA_4   400     0     0
   .................................
   11  sub2_ICA_13   300     0     0
   12  sub2_ICA_14   450     0     0      

首先,代码似乎使不同的dataFrame没有一个one.Second,第一行被删除(缺少sub1_ICA_1,可以用列名替换)。我在使用的循环中找不到问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-13 06:19:34

我认为您需要先创建DataFrame的列表,然后用参数keysMultiIndex中的新值进行range,然后修改id列,最后通过reset_index删除MultiIndex

此外,还将参数名添加到自定义列名称的read_csv中。

代码语言:javascript
复制
Y = []
for x in S_Sub_list: 
    n = ['id', 'data', 'isEB', 'isEM']
    temp = pd.read_csv('sub' + str(x) +'_ICA_thre.csv', names = n)
    Y.append(temp)

#list comprehension alternative
#n = ['id', 'data', 'isEB', 'isEM']
#Y = [pd.read_csv('sub' + str(x) +'_ICA_thre.csv', names = n) for x in S_Sub_list]

df = pd.concat(Y, keys=range(1,len(S_Sub_list) + 1))

df['id'] = 'sub' + df.index.get_level_values(0).astype(str) +'_ICA_'+ df['id'].astype(str)
df = df.reset_index(drop=True)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47258065

复制
相关文章

相似问题

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