如何从结尾字符可以更改的文件夹中导入文件 - python pandas?

How to import a file from a folder where the ending characters can change - python pandas?

我目前有一个文件夹,其中包含多个我试图从中读取的具有相似名称的文件。 例如: 文件夹包含文件:

apple_2019_08_26_23434.xls
apple_2019_08_25_55345.xls
apple_2019_08_24_99345.xls

文件名格式很简单:

 apple_<date>_<5 random numbers>.xls

如果我不关心末尾的随机 5 位数字,如何将 excel 文件读入 pandas df?

例如

df = pd.read_excel('e:\Document\apple_2019_08_26_<***wildcard***>.xls')

谢谢!

您可以通过 glob.

使用 unix 风格的路径名扩展
import glob

# get .txt files in current directory
txt_files = glob.glob('./*.txt')

# get .xls files in some_dir
xls_files = glob.glob('some_dir/*.xls')

# do stuff with files
# ...

这里的*基本上就是"anything"。

示例pandas:

import glob

for xls_file in glob.glob('e:/Document/apple_2019_08_26_*.xls'):
    df = pd.read_excel(xls_file)

    # do stuff with df
    # ...

使用 os.chdir 更改目录,然后导入 startwith 正确名称的所有文件:

import os
os.chdir(r'e:\Document')
dfs = [pd.read_excel(file) for file in os.listdir() if file.startswith('apple_2019_08')]

现在您可以通过索引访问每个数据帧:

print(dfs[0])

print(dfs[1])

或者如果它们具有相同的格式,则将它们合并为一个大数据框

df_all = pd.concat(dfs, ignore_index=True)

如果你想在代码中改变5位数字部分,你可以尝试这样的事情:

from os import listdir
from os.path import isfile, join
import pandas as pd

mypath = '/Users/username/aPath'
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]

fiveDigitNumber = onlyfiles[0][17:22]
filename = onlyfiles[0][:17]+fiveDigitNumber+onlyfiles[0][22:]

df = pd.read_excel(filename)