如何从文件路径列表中创建数据帧字典的字典?
how to create a dict of dict of dict of dataframes from list of file paths?
我有一个要转换成数据框的文件路径列表。
这是文件的样子
为了更好地帮助组织它,我想要一个字典,其中键是日期,值是一个字典,其中键是名称,他们有一个字典,其中键是结果、销售、团队、值是文件的数据框。
希望我解释的很好
2022-03-23_John_result_data.csv
2022-03-23_John_sales_data.csv
2022-03-23_John_team_data.csv
2022-03-23_Lisa_result_data.csv
2022-03-23_Lisa_sales_data.csv
2022-03-23_Lisa_team_data.csv
2022-03-23_Troy_result_data.csv
2022-03-23_Troy_sales_data.csv
2022-03-23_Troy_team_data.csv
2022-03-25_Bart_result_data.csv
2022-03-25_Bart_sales_data.csv
2022-03-25_Bart_team_data.csv
编辑
抱歉进行了编辑,但假设文件名可以是“2022-03-23_John love [23]_result_data.csv”] 忘记添加这种情况,他们可以在 space 之间名字。
您可能会遍历文件名并执行多个 dict.setdefault
s(或使用 defaultdict),例如:
filenames = ['2022-03-23_John_result_data.csv']
dfs = {}
for filename in filenames:
date, name, category, _ = filename.split('_', 3)
dfs.setdefault(date, {}).setdefault(name, {})[category] = pd.read_csv(filename)
或使用 defaultdict
...
从集合中导入 defaultdict
dfs = defaultdict(dict)
然后你的 dfs.setdefault(...)
行变成:
dfs[date][name][category] = pd.read_csv(filename)
我有一个要转换成数据框的文件路径列表。
这是文件的样子
为了更好地帮助组织它,我想要一个字典,其中键是日期,值是一个字典,其中键是名称,他们有一个字典,其中键是结果、销售、团队、值是文件的数据框。
希望我解释的很好
2022-03-23_John_result_data.csv
2022-03-23_John_sales_data.csv
2022-03-23_John_team_data.csv
2022-03-23_Lisa_result_data.csv
2022-03-23_Lisa_sales_data.csv
2022-03-23_Lisa_team_data.csv
2022-03-23_Troy_result_data.csv
2022-03-23_Troy_sales_data.csv
2022-03-23_Troy_team_data.csv
2022-03-25_Bart_result_data.csv
2022-03-25_Bart_sales_data.csv
2022-03-25_Bart_team_data.csv
编辑
抱歉进行了编辑,但假设文件名可以是“2022-03-23_John love [23]_result_data.csv”] 忘记添加这种情况,他们可以在 space 之间名字。
您可能会遍历文件名并执行多个 dict.setdefault
s(或使用 defaultdict),例如:
filenames = ['2022-03-23_John_result_data.csv']
dfs = {}
for filename in filenames:
date, name, category, _ = filename.split('_', 3)
dfs.setdefault(date, {}).setdefault(name, {})[category] = pd.read_csv(filename)
或使用 defaultdict
...
从集合中导入 defaultdict
dfs = defaultdict(dict)
然后你的 dfs.setdefault(...)
行变成:
dfs[date][name][category] = pd.read_csv(filename)