通过读取文件名以编程方式将 excel 文件插入 pandas 数据框
programtically ingesting xl files to pandas data frame by reading filename
我有一个包含 6 个文件的文件夹,其中 4 个是 excel 个我想放入 pandas 的文件,另外 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
我们可以在字典理解中排除任何与特定模式匹配的文件,即具有 space.
的任何文件
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']
调用它们
我有一个包含 6 个文件的文件夹,其中 4 个是 excel 个我想放入 pandas 的文件,另外 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
我们可以在字典理解中排除任何与特定模式匹配的文件,即具有 space.
的任何文件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']