微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过读取文件名以编程方式将 xl 文件摄取到 Pandas 数据框

如何解决通过读取文件名以编程方式将 xl 文件摄取到 Pandas 数据框

我有一个包含 6 个文件文件夹,4 个是我想带入 Pandas 的 excel 文件,2 个只是其他文件。我希望能够使用 pathlib文件夹一起工作,以自动将我想要的 excel 文件摄取到单个 Pandas 数据帧中。我还希望能够使用 excel 文件名称(不带文件扩展名)命名每个新数据框

例如。

import pandas as pd
import pathlib as pl

folder = pl.WindowsPath(r'C:\Users\username\project\output')
files = [e for e in folder.iterdir()]

for i in files:
    print(i)

['C:\Users\username\project\output\john.xlsx','C:\Users\username\project\output\paul.xlsx','C:\Users\username\project\output\random other file not for df.xlsx','C:\Users\username\project\output\george.xlsx','C:\Users\username\project\output\requirements for project.txt','C:\Users\username\project\output\ringo.xlsx' ] 

从这里开始,我希望能够做类似的事情

for i in files:
    if ' ' not in str(i.name):
        str(i.name.strip('.xlsx'))) = pd.read_excel(i)

读取文件名,如果它不包含任何空格,则取名称删除文件扩展名并将其用作从 Excel 文件构建的 Pandas 数据框的变量名。

如果我正在做的事情是不可能的,那么我有其他方法可以做到,但它们会重复很多代码

感谢任何帮助。

解决方法

使用 pathlibre

我们可以排除在我们的字典理解中与特定模式匹配的任何文件,即任何带有空格的文件。

from pathlib import Path
import re 
import pandas as pd

pth = (r'C:\Users\username\project\output')

files = Path(pth).glob('*.xlsx') # use `rglob` if you want to to trawl a directory.


dfs = {file.stem : pd.read_excel(file) for file in 
                   files if not re.search('\s',file.stem)}

基于以上你会得到:

{'john': pandas.core.frame.DataFrame,'paul': pandas.core.frame.DataFrame,'george': pandas.core.frame.DataFrame,'ringo': pandas.core.frame.DataFrame}

其中 pandas.core.frame.DataFrame 是您的目标数据框。

然后您可以通过执行 dfs['john']

调用它们

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。