2024-09-26 18:07:19 发布
网友
我已将几个.xlsx文件作为数据帧从特定文件夹加载到列表中,并希望将列表中的这些数据帧“解包”到环境中。我来自R,在那里list2env()函数可以完成任务,但我似乎无法在python中找到解决方案(新手)
list2env()
file_names = os.listdir() df = [] for file_names in file_names: df.append(pd.read_excel(file_names))
如何将“df”列表中的数据帧解压缩到环境中
谢谢
list2env的字面等价物是globals().update(...)或globals()[...] = ...,但通常使用显式字典会更好
list2env
globals().update(...)
globals()[...] = ...
正如其他人所建议的,显式变量类似于:
df = { os.path.splitext(filename)[0]: pd.read_excel(filename) for filename in os.listdir() }
然后可以使用df["name"]引用每个数据帧
df["name"]
如果要将所有这些对象都制作成顶级对象,可以使用以下方法:
globals().update(df)
或者,在循环中:
for filename in os.listdir(): bare_name = os.path.splitext(filename)[0] globals()[bare_name] = pd.read_excel(filename)
但是,这将使调试变得更加困难,存在用加载的数据帧替换内置函数和模块的风险,并且通常会导致每个阅读代码的人说“请不要这样做”。最多,在用于初始探索的笔记本中,它可能是正常的,而在生产代码中,它永远不会
我建议您使用pathlib筛选特定文件:
from pathlib import Path p = Path(folder_path)
筛选特定后缀:
xlsx_files = p.rglob("*.xlsx")
与熊猫迭代:
[pd.read_excel(f) for f in xlsx_files]
如果要保留文件名,可以使用字典:
{f.name: pd.read_excel(f) for f in xlsx_files}
我相信你可以使用条件词典理解:
dfs ={filename: pd.read_excel(filename) for filename in os.listdir() if filename.endswith('.xlsx')}
然后可以通过其文件名访问每个数据帧,例如dfs[filename]
dfs[filename]
list2env
的字面等价物是globals().update(...)
或globals()[...] = ...
,但通常使用显式字典会更好正如其他人所建议的,显式变量类似于:
然后可以使用
df["name"]
引用每个数据帧如果要将所有这些对象都制作成顶级对象,可以使用以下方法:
或者,在循环中:
但是,这将使调试变得更加困难,存在用加载的数据帧替换内置函数和模块的风险,并且通常会导致每个阅读代码的人说“请不要这样做”。最多,在用于初始探索的笔记本中,它可能是正常的,而在生产代码中,它永远不会
我建议您使用pathlib筛选特定文件:
筛选特定后缀:
与熊猫迭代:
如果要保留文件名,可以使用字典:
我相信你可以使用条件词典理解:
然后可以通过其文件名访问每个数据帧,例如
dfs[filename]
相关问题 更多 >
编程相关推荐