需要将大约30个csv文件导入到python中,因为我有一个for循环,但是我需要转换为列表理解
所有文件的结构相同,并且它们具有相同的列名,在所有这些文件中,我只需要代码中提到的少数列,并且需要创建一个可以区分数据的列
用于循环
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)
我尝试了以下操作,但没有用
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)
答案 0 :(得分:0)
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])))