Python计算权重累积降水量WAP

发布时间 2023-05-17 16:49:46作者: 蓝色大螃蟹

原始数据跟上一篇一样

计算公式如图:

公式解析:

实则就是当前的降水量一列,前一个月的降水量a的二次方×p2一列,这两列错位相加。

#!usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: Suyue
@file: calculateWAP.py
@time: 2023/05/17
@desc:
"""
# python实现对Excel某一列乘以某个常数,结果存放在另一个单元格中
import pandas as pd
import math


#读取数据
data = pd.read_excel('G:/drought/processdata/datas/rainmonth.xlsx',sheet_name='50525')

#提取rain用于WAP计算
rain = data["rain"].values
#进行WAP公式计算
WAP1 = 0.85 * rain
WAP2 = math.pow(0.85,2)*rain

#第一列第二行加第二列第一行
a = WAP1[1:]
b = WAP2[:383]
print(data.head())
#错位相加
WAP3 = a + b
print(WAP3)


# 将结果保存到文件
OUT = pd.DataFrame([WAP1, WAP2, WAP3],
                   index = ['WAP1','WAP2','WAP3']).T
OUT.to_excel(r'G:/drought/processdata/datas/WAP.xlsx', index = False)

因为会涉及最后两列对不上所以取了这个

WAP2[:383]

 

 此方法较为愚蠢 实际可以写个循环,但是这次懒得试了以后可以用用:

for i in range(len(df)-1):
    df.loc[i,'新列名'] = df.loc[i+1,'第一列列名'] + df.loc[i,'第二列列名']