python - 基于降雨的作物保险赔付计算
问题描述
我正在分析每日降雨量数据,以计算在降雨量过多的情况下农民的保险支出。如果“连续 3 天累积降雨量”在 10 月 1 日至 10 月 31 日期间大于 50 毫米,则政策涵盖。
我能够用 Python 编写代码来查找匹配条件。但是当连续下雨时,结果会有重叠的日期,这是不可接受的支出。
在重叠日期的情况下需要帮助计算最佳支付选项。
for dist in data["dcode"].unique():
d_data = data[data["dcode"] == dist]
#print(dist)
for block in d_data["mandal"].unique():
prev_rain = 0
prev_to_date = "01/12/2022"
for each in rain_dev_input:
#[(rain_dev_input["TERM"] == "DEFICIT RAINFALL") & (rain_dev_input["DIST_CODE"] == 240)]:
#print(each)
distcode = each["DIST_CODE"]
#print(distcode)
term = str(each["TERM"])
if (distcode == dist) & (term == "EXCESS RAINFALL"):
start_date = each["FROM_PERIOD"]
end_date = each["TO_PERIOD"]
s_date = datetime.datetime.strptime(start_date, "%d/%m/%y")
e_date = datetime.datetime.strptime(end_date, "%d/%m/%y")
#s_date = start_date.strftime(start_date, "%Y-%m-%d")
#e_date = end_date.strftime(end_date, "%Y-%m-%d")
#count1 = daterange(s_date, e_date)
#print(s_date, ": ", e_date)
m_data = d_data[d_data["mandal"] == block]
p_data = m_data.loc[start_date:end_date]
for singledate in daterange(s_date, e_date):
#print("Inside Excess Rain")
from_date = datetime.datetime.strftime(singledate, "%Y-%m-%d")
to_date = datetime.datetime.strftime(
(singledate + timedelta(2)), "%Y-%m-%d"
)
total_rain = p_data.loc[from_date:to_date]["rain"].sum()
#print(total_rain)
range1 = float(each["RANGE1"])
range2 = float(each["RANGE2"])
if (total_rain >= range1) & (total_rain < range2):
#print("inside write to file")
if (from_date <= prev_to_date <= to_date) & (prev_rain <= total_rain):
temp["Max"] = total_rain;
prev_rain = total_rain
prev_to_date = to_date
temp = dict()
temp["district"] = each["DIST_NAME"]
temp["mandal"] = block
temp[
"category"
] = "excess rainfall for 3 consecutive days, cumulative"
temp["rainfall"] = total_rain
temp["from_date"] = from_date
temp["to_date"] = to_date
temp["phase"] = each["PHASE"]
#temp["insurance"] = insurance_excessrain(each, total_rain)
temp["insurance"] = (total_rain - range1)* each["PAYOUT"]
excess_rainfall.append(temp)
# %%
# output excess rainfall rain_dev_list data
excess_rain = pd.DataFrame(excess_rainfall)
excess_rain.to_csv(str(output_folder) + "/excess_rainfall_2020_h2.csv", index=False)
此结果的日期重叠
每日降雨量样本数据
解决方案
推荐阅读
- javascript - 当我尝试在 PHP 中运行此 JS 代码时,为什么没有任何反应?
- java - 基于设备传感器覆盖旋转锁定设置旋转
- xpath - NaN 和任何其他值的 XPath 1.0 比较
- amazon-web-services - 如果我在复制之前删除 S3 对象会怎样?
- c# - `dotnet watch` 未检测到更改
- java - 当应用程序在后台运行时,如何检测用户何时粘贴内容?
- assembly - 哪个寄存器将 cmp 结果存储在 arm 中?
- python - 带有 3 维列表的 3d 散点图
- python - 将字符串形式的数字字符串转换为整数
- python - 在 C++ 中使用 numpy 数组的“未定义引用”错误