我试图在使用通配符的同时读取多个excel文件,并使用pandas将其放入saparate数据帧中
我已阅读基本路径,并将使用下面的内容访问子目录:
>>>inputs_path
'C:/Users/ABC/Downloads/Input'
>>>path1 = os.chdir(inputs_path + "/path1")
>>>fls=glob.glob("*.*")
>>>fls
['Zambia_W4.xlsm',
'Australia_W4.xlsx',
'France_W4.xlsx',
'Japan_W3.xlsm',
'India_W3.xlsx',
'Italy_W3.xlsx',
'MEA_W5.xlsx',
'NE_W5.xlsm',
'Russia_W5.xlsx',
'Spain_W2.xlsx']
>>>path2 = os.chdir(inputs_path + "/path2")
>>>fls=glob.glob("*.*")
>>>fls
['Today.xlsm',
'Yesterday.xlsx',
'Tomorrow.xlsx']
我现在读的是:
>>>df_italy = pd.read_excel("Italy_W3.xlsx",sheet_name='Sheet1')
>>>df_russia = pd.read_excel("Russia_W5.xlsx",sheet_name='Sheet3')
>>>df_france_1 = pd.read_excel("France_W4.xlsx",sheet_name='Sheet1', usecols = 'M, Q', skiprows=4)
>>>df_spain = pd.read_excel("Spain_W2.xlsx",sheet_name='Sheet2',usecols = 'T:U', skiprows=30 )
>>>df_ne = pd.read_excel("NE_W5.xlsm",sheet_name='Sheet2',usecols = 'N,P', skiprows=4 )
>>>df_ne_c = pd.read_excel("NE_W5.xlsm",sheet_name='Sheet1',usecols = 'H:J', skiprows=141 )
由于列表fls中有文件名,是否有一种方法可以使用该列表并读取文件,而不必实际使用实际文件名,因为文件名将根据周数进行更改。 此外,在读取excel文件时,必须保留上述数据框名称
我想把这个文件读成
>>>df_italy = pd.read_excel("Italy*.xlsx",sheet_name='Sheet1')
有没有办法做到这一点
可以像这样简单地填充数据帧字典:
您还可以使用for循环来运行您需要为每个文件执行的作业,这不需要知道文件名。此外,还可以将所有电子表格读入一个df,并确保有一个额外的列具有每行对应的文件名
下面的代码假设每个国家都有几个文件,需要对它们进行排序以查找最近一周的情况
find_country方法搜索路径中具有国家名称的所有文件,使用regex提取周数,对它们进行排序以查找最大的编号,然后从与找到的最近一周匹配的所有国家/地区文件的全局返回文件路径
如果您的文件总是有一个
_
要拆分,您可以创建一个字典,将拆分值作为键,文件路径作为位置让我们使用在Python 3.4+中添加的Pathlib,因为它更易于与文件系统一起使用
与文件名匹配的正则表达式
假设您的字典是如上所述使用文件名和路径作为值创建的,我们可以这样做。您需要扩展该函数以处理多个文件匹配
相关问题 更多 >
编程相关推荐