Multiple dataframes stored in dictionary - Python/Pandas
我有不同的csv和excel文件要在pandas中加载,我想动态地创建加载结构(例如:
字典将值存储为字符串的问题是,从那里我可以加载csv文件并遍历数据帧。
如果我使用exec和eval,这是可行的,但我正在寻找替代方案。到目前为止:创建命令。
1 2 | 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,只使用基于
有什么想法吗?
感谢任何帮助。
干杯
你可以试试这个
1 2 3 4 5 6 7 8 9 10 11 | 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'] |
你可以通过它来访问dataframes操控他们的路径等等。
你可以使用字典的理解:
1 2 3 | import pandas as pd paths = ['file1.csv', 'file2.csv'] dfs = {p: pd.read_csv(p) for p in paths} |
所以,如果你想读取Excel文件的命令是一样的,你可以使用
1 2 | 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} |
"豪尔赫的解决方案与环有优势,你可以在每个包