Python计算多站点多年权重累积降水量WAP
之前计算过单站点的WAP,现在计算多站点的WAP
数据样子直接参考上几次的文章
直接上代码:
#!usr/bin/env python # -*- coding:utf-8 -*- """ @author: Su @file: getWAP.py @time: 2023/07/27 @desc: """ import pandas as pd import math # 打开excel文件 df = pd.read_excel('processdata/lianxi/鄂尔多斯.xlsx') # 初始化空列表为了把wap数据写入excel,避免excel总是仅得出最后一个数的情况 temp = [] # 给站点分类 nameList = set(df.name.values) # 先写个循环进行站点分类,再提取rain值进行WAP计算 for i in nameList: # 进行站点遍历 dfName = df[df['name'] == i] # print(dfName) #df2 = pd.DataFrame() # 提取rain值 rain = dfName.rain.values # 进行WAP公式计算 WAP1 = 0.85 * rain WAP2 = math.pow(0.85, 2) * rain # 创建dataframe WAP1 = pd.DataFrame(WAP1) WAP2 = pd.DataFrame(WAP2) # 第一列第二行加第二列第一行 mvWAP1 = WAP1.shift(-1) itWAP = mvWAP1 + WAP2 WAP = itWAP.shift() # 创建一个新DataFrame放入分类好后的站点数据 df2 = pd.DataFrame(dfName) # 把计算好的WAP值放入df2新增第一列 df2.insert(loc=0, column='WAP1', value=WAP1.values) df2.insert(loc=1, column='WAP2', value=WAP2.values) df2.insert(loc=2, column='WAP', value=WAP.values) # print(df2) # 将循环出来的结果,按站点名字一个一个的写入excel temp.append(df2) # 整合DataFrame列表里的数据,进行纵向拼接 rdf= pd.concat(temp,axis=0) rdf.to_excel('processdata/lianxi/鄂尔多斯WAP.xlsx')