如何解决通过读取文件名以编程方式将 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 数据框的变量名。
如果我正在做的事情是不可能的,那么我有其他方法可以做到,但它们会重复很多代码。
感谢任何帮助。
解决方法
使用 pathlib
和 re
我们可以排除在我们的字典理解中与特定模式匹配的任何文件,即任何带有空格的文件。
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 举报,一经查实,本站将立刻删除。