首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在将for循环转换为列表理解方面需要帮助

在将for循环转换为列表理解方面需要帮助
EN

Stack Overflow用户
提问于 2019-04-24 21:32:47
回答 1查看 59关注 0票数 0

我需要导入大约30个csv文件到python,为此我有一个for循环,但我需要转换为列表理解

所有文件的结构都是相同的,它们具有相同的列名,其中我只需要代码中提到的很少的列,并且需要创建一个可以区分数据的列

for循环

代码语言:javascript
复制
import pandas as pd
cwd = os.getcwd()
dirs =os.listdir(cwd)

dfx=[]

for items in dirs:
    if items.find('GSVA')>0 and items.find('.csv')>0:
        x=cwd+'\\'+items
        temp_df=pd.read_csv((x),encoding = "ISO-8859-1")
        temp_df=temp_df.loc[::,['S.No.','Item','2014-15']]
        temp_df['State']=items.split('-')[1]
        dfx.append(temp_df)

gsva = pd.concat(dfx)

我试过下面的方法,但不起作用。

代码语言:javascript
复制
import os 
cwd = os.getcwd()
directory = os.listdir(cwd)

gsva = [(gsva.append(temp)
       temp['State']=items.split('-')[1]
       temp = temp.loc[::,['S.No.','Item','2014-15']]
       temp = pd.read_csv(cwd+'\\'+items)

       for items in directory
       if items.find('GSVA')>0 ]
gsva_1 = pd.concat(gsva)
EN

回答 1

Stack Overflow用户

发布于 2019-04-24 22:07:04

代码语言:javascript
复制
import os
import pandas as pd

cwd = os.getcwd()

dirs = filter(lambda x: x[1]>=0 and x[2]>0, [(x, x.find('.csv'), x.find('GSVA')) for x in os.listdir(cwd)])
temp_df = [pd.read_csv((x),encoding = "ISO-8859-1") for x in [cwd+'\\'+x for x in dirs]]

def add_state(x):
    x['State'] = x.split('-')[1]
    return x

gsva = pd.concat(list(map(add_state, [temp_df.loc[::,['S.No.','Item','2014-15']] for x in temp_df])))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55831328

复制
相关文章

相似问题

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