python 把excle中指定条件的sheet数据合并成一个表
创始人
2024-05-25 19:17:46
0
import calendar
import datetime
import pandas as pd
import xlwings as xw
import pandas as pd
import repath= r"C:\Users\Thinkpad\Desktop\2022年水文资料.xlsx"
#-------------------获取表头文件名称及年份----------------------------------------------
app = xw.App(visible=True, add_book=False) # visible 隐式打开文件
book = app.books.open(path)  # 打开 excel
sht = book.sheets[0] # 选择 sheet
btwjm=sht.range('a1:a1').value #获取表头文件名称
print(btwjm)  #获取表头文件名称
nf=btwjm.split('年')[0][4:] #获取表头中的年份值
print(nf)
book.close() # 关闭
app.quit() # 退出
#-------------------获取表头文件名称及年份----------------------------------------------
#-------------------获取该年份12个月每个的天数----------------------------------------------
i=0
myts=['','','','','','','','','','','',''] #定义一个空列表用于存放该年每月的天数
my=['','','','','','','','','','','','']
while i < 12:#j=i+1myts[i]=calendar.monthrange(int(nf),i+1)[1]  #获取该年12个月每月的天数my[i]=str(i+1)+'月份'#print(myts[i])#print(my[i])i=i+1
#print(myts)
#print(my)
#-------------------获取该年份12个月每个的天数----------------------------------------------
#--------------------读取所有的sheet后合并成1张表-------------------------------------------
df = pd.read_excel(path, sheet_name=None) #获取excel表格的所有sheet名
sheetmc=list(df) #获取excel表格的所有sheet名存入列表中sheetmc
#print(sheetmc)
i=0
df = pd.DataFrame() #创建一个空的DataFrame
while i < len(sheetmc):yf = int(str(sheetmc[i]).split('月')[0])  # 获取当前sheet的月份if sheetmc[i]==my[yf-1]: #判断excel表中是否包含12个月的数据dq = pd.read_excel(path, sheetmc[i])dq = dq.loc[3:myts[yf-1] + 2]  # 因原始表中所有月天数都是31,这里需要根据该月的天数获取数据dq = dq.iloc[:, 1:12]  # 获取第一列到13列的数据# 对列名称进行重新命名dq.columns = ["雨量", "8时水位", "发电量", "发电用水", "弃水量", "生态供水", "径流水量", "流量", "温度", "库 容", "单耗"]# --------------------配置选取数据的时间段------------------------------------# sd获取第一个sheet中月份+01为开始日期sd = str(nf) + "/" + str(sheetmc[i]).split('月')[0] + "/" + "01"# ed获取最后一个sheet中月份+最后一个sheet中月份的天数为最后日期ed = str(nf) + "/" + str(sheetmc[i]).split('月')[0] + "/" + str(myts[int(str(sheetmc[i]).split('月')[0]) - 1])# 设置起始时间s_date = datetime.datetime.strptime(sd, '%Y/%m/%d').date()# 设置结束时间e_date = datetime.datetime.strptime(ed, '%Y/%m/%d').date()print(s_date)print(e_date)# freq="D"表示按天,可以按分钟,月,季度,年等date_range = pd.date_range(start=s_date, end=e_date, freq="D")dq.insert(0,'日期',date_range)# 把重新命名的结果重新保存dq["日期"] = dq["日期"].astype("datetime64")  # 确保数据格式为日期# 把日期列只保留年月日dq["日期"] = pd.to_datetime(dq["日期"]).dt.date# --------------------设置选取数据的时间段------------------------------------print(dq)df = pd.concat([df, dq])i=i+1df.to_excel('C:\\Users\\Thinkpad\\Desktop\\'+str(nf)+"年水文雨量.xlsx")

相关内容

热门资讯

不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
安卓文字转语音tts没有声音 安卓文字转语音TTS没有声音的问题在应用中比较常见,通常是由于一些设置或者代码逻辑问题导致的。本文将...
APK正在安装,但应用程序列表... 这个问题可能是由于以下原因导致的:应用程序安装的APK文件可能存在问题。设备上已经存在同名的应用程序...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
报告实验.pdfbase.tt... 这个错误通常是由于找不到字体文件或者文件路径不正确导致的。以下是一些解决方法:确认字体文件是否存在:...