根据您拥有的日期和年份阅读多个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号)