import pandas as pd
import os
data = {}
for f in os.listdir('schools/'):
data[f.replace('.csv','')] = pd.read_csv('schools/'+f)
我经常遇到这种情况,我想使用某种列表理解,我相信可以使用...的格式。
{pd.read_csv('schools/'+f) for f in os.listdir('schools/')}
但是,不知道如何获得钥匙?是否有可能以这种方式生成对象?
答案 0 :(得分:3)
你想要词典理解
for f in os.listdir('schools/'):
data[f.replace('.csv','')] = pd.read_csv('schools/'+f)
变为:
data = {f.replace('.csv',''):pd.read_csv(os.path.join('schools',f)) for f in os.listdir('schools')}
使用glob.glob
可能会更安全,更易读,因此您可以过滤掉非csv文件而不必join
:
data = {f.replace('.csv',''):pd.read_csv(f) for f in glob.glob(os.path.join('schools',"*.csv"))}
稍微扩展,将其转换为pandas数据帧(假设每个csv只有一列):
pd.DataFrame({f.replace('.csv','') : pd.read_csv(os.path.join('schools',f)).values.reshape(-1, ) for f in os.listdir('schools')})