根据您拥有的日期和年份阅读多个excel

Posted

技术标签:

【中文标题】根据您拥有的日期和年份阅读多个excel【英文标题】:Read multiple excels according to the date and year you have 【发布时间】:2021-07-20 22:32:41 【问题描述】:

如何按顺序读取多个 xlsx 文件并将它们放在同一个数据框中?

现在我有以下代码给我Error: No such file or directory: 'C:\\Users\\HN_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)

【问题讨论】:

文件是如何命名的,模式是什么,如果有的话? 文件名:HN_022021 ... 022017 年月 如果您的文件名是 mmyyyy,那么您想将 20 添加到年份并切换顺序,因为它当前正在寻找 yymm 格式。 【参考方案1】:

您可以使用正则表达式来获取所有匹配文件的列表,如下所示:

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)

使用正则表达式,看看最适合你的。

【讨论】:

【参考方案2】:

你可以试试这样的。在这里,我对 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

还有你的数据框。

【讨论】:

以上是关于根据您拥有的日期和年份阅读多个excel的主要内容,如果未能解决你的问题,请参考以下文章

根据出生年份计算年龄的公式,如何根据出生日期求年龄?

JAVA中怎么实现,根据用户输入的年份和月份得到当月第1天(该月1号)

EXCEL 拆分日期后年份

如何在活跃年份分布项目?

C#.net 日期控件,如何选择年份,目前只能一个月一个月的选,无法直接选择其它年份

根据月份和年份获取日期