字典中存储的多个数据帧-Python/Pandas
我有不同的csv和excel文件要加载到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
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来识别它们,不确定这些是否有意义……哈哈