Python 根据你拥有的日期和年份,阅读多项卓越成绩

Python 根据你拥有的日期和年份,阅读多项卓越成绩,python,excel,pandas,Python,Excel,Pandas,如何按顺序读取多个xlsx文件并将其放置在同一数据帧中 现在我有以下代码,它给了我错误:没有这样的文件或目录:'C:\\Users\\HN\u 1701.xlsx' months=['01','02','03','04','05','06','07','08','09','10','11','12'] years=['21','20','19','18','17'] years=list(reversed(years)) for i in years: for j in month

如何按顺序读取多个xlsx文件并将其放置在同一数据帧中

现在我有以下代码,它给了我
错误:没有这样的文件或目录:'C:\\Users\\HN\u 1701.xlsx'

months=['01','02','03','04','05','06','07','08','09','10','11','12']

years=['21','20','19','18','17']

years=list(reversed(years))

for i in years:
    for j in months:
        
        
        print(r'C:\HN_'+j+i+'.xlsx')
        xls = pd.read_excel(r'C:\Users\HN_'+j+i+'.xlsx', sheet_name="ER", header=9)

你可以试试这样的。在这里,我对csv文件执行此操作,但对xlxs文件也执行此操作。我看了一个私人文件夹,但你可以把它翻译成你自己的。首先,定义您需要的所有年、月和日。创建一个空的df

import pandas as pd
months=['04']
day = ['13','14','21']
years=['2021']

df = []
for years in years:
    for months in months:
        for day in day:
            path = r"C:\Users\k_sego\repos\wagon_report_weekly\Data_by_day\\" 
            filename = "{}all_vehicle_day_agg_{}-{}-{}.csv".format(path, years, months,day)
            print(filename)
            df.append(pd.read_csv(filename, sep=";"))
返回:


C:\Users\k_sego\repos\wagon_report_weekly\Data_by_day\\all_vehicle_day_agg_2021-04-13.csv
C:\Users\k_sego\repos\wagon_report_weekly\Data_by_day\\all_vehicle_day_agg_2021-04-14.csv
C:\Users\k_sego\repos\wagon_report_weekly\Data_by_day\\all_vehicle_day_agg_2021-04-21.csv


以及您的数据帧。

您可以通过正则表达式获得所有匹配文件的列表,如下所示:

import os
import re
file_list = [file for file in os.listdir('test/') if re.search(r'HN_(01|02|03|04|05|06|07|08|09|10|11|12).{2}(21|20|19|18|17)+\.xlsx$', file)]
for file in file_list:
    xls = pd.read_excel(f'C:\Users\{file}', sheet_name="ER", header=9)

玩正则表达式,看看什么最适合您。

文件如何命名,模式是什么,如果有的话?文件名:HN_022021。。。022017月和年如果您的文件名是mmyyyy,那么您希望将
20
添加到年份中,并切换顺序,因为它当前正在寻找yymm格式。