字典中存储的多个数据帧-Python/Pandas

字典中存储的多个数据帧-Python/Pandas,python,pandas,dataframe,Python,Pandas,Dataframe,我有不同的csv和excel文件要加载到pandas中,我想动态创建加载结构(例如:df1=pd.read\u csv(xxxxx)) 所以我循环遍历文件,创建命令并将它们存储在字典中 字典的问题是将值存储为字符串,从那里我可以加载csv文件并遍历数据帧 如果我使用exec和eval,它是有效的,但我正在寻找替代方案。 到目前为止: 创建命令 for i in list1: df_dic[calendar.month_abbr[int(i[4:6])]] = ''.join('''df

我有不同的csv和excel文件要加载到pandas中,我想动态创建加载结构(例如:
df1=pd.read\u csv(xxxxx)
) 所以我循环遍历文件,创建命令并将它们存储在字典中

字典的问题是将值存储为字符串,从那里我可以加载csv文件并遍历数据帧

如果我使用exec和eval,它是有效的,但我正在寻找替代方案。 到目前为止: 创建命令

for i in list1:
     df_dic[calendar.month_abbr[int(i[4:6])]] = ''.join('''df_lst_'''+calendar.month_abbr[(int(i[4:6]))]+''' = pd.read_excel(r'''+"'"+dir1+i+"'"+','+'sheet_name='''''Data'''"'"+')')
然后,我创建了一个新的dict,它只基于
df_list[X]
来操作它,但它再次被存储为字符串。 我尝试了不同的方法(例如,ast.literal\u eval,它给了我
ValueError:node或string格式错误)。我卡住了

有什么想法吗

谢谢你的帮助

干杯,你可以试试这个吗

def load_csvs(*paths):
    dfs = {}
    for path in paths:
        dfs[path] = pd.read_csv(path)
    return dfs

if __name__ == '__main__':
    paths = ['foo.csv', 'bar.csv']
    dfs = load_csvs(paths)
    # Access the foo.csv dataframe as foo_df
    foo_df = dfs['foo.csv']

您可以通过数据帧的路径访问数据帧以对其进行操作等等。

您可以使用dict理解:

import pandas as pd
paths = ['file1.csv', 'file2.csv']
dfs = {p: pd.read_csv(p) for p in paths}
如果您还想读取Excel文件,请使用相同的命令

paths = ['file1.csv', 'file2.csv', 'excel_file.xls']
dfs = {p: pd.read_csv(p) if p.endswith('.csv') else pd.read_excel(p) for p in paths}

@jorge的循环解决方案的优点是,您可以将每个
read\u csv
包装在一个try-catch块中,这样您就可以处理损坏的文件。

Hi@notArobot,欢迎使用so。加载数据帧后,您想对其执行什么操作?您将如何识别它们?hi@JorgeLavín,通常,与其他一些dfs连接(使用差异信息)、过滤、创建一些图表等等。。。我的计划是稍后创建另一个dic来识别它们,不确定这些是否有意义……哈哈