有没有办法在Python环境中“解压”数据帧列表?

2024-09-26 18:07:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我已将几个.xlsx文件作为数据帧从特定文件夹加载到列表中,并希望将列表中的这些数据帧“解包”到环境中。我来自R,在那里list2env()函数可以完成任务,但我似乎无法在python中找到解决方案(新手)

file_names = os.listdir()

df = []

for file_names in file_names: df.append(pd.read_excel(file_names))

如何将“df”列表中的数据帧解压缩到环境中

谢谢


Tags: 文件数据函数文件夹df列表环境names
3条回答

list2env的字面等价物是globals().update(...)globals()[...] = ...,但通常使用显式字典会更好

正如其他人所建议的,显式变量类似于:

df = {
    os.path.splitext(filename)[0]: pd.read_excel(filename)
    for filename in os.listdir()
}

然后可以使用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]

相关问题 更多 >

    热门问题