如何在Pandas数据框中基于温度列创建采暖度日(HDD)列?
在Pandas数据框中创建采暖度日(HDD)列
嘿,我来帮你搞定这个采暖度日(HDD)的计算!虽然你没给出具体公式,但先给你最常用的标准实现——毕竟HDD的核心逻辑大多围绕基准温度和实际温度的差值展开。
通用HDD计算逻辑
通常采暖度日的计算是基于一个基准温度(比如很多地区用18℃作为舒适阈值):
当实际温度 < 基准温度时,HDD = 基准温度 - 实际温度
当实际温度 ≥ 基准温度时,HDD = 0
用公式简化就是:HDD = max(基准温度 - 实际温度, 0)
Pandas实现代码
直接用矢量化操作就行,比apply效率高多了,适合处理大数据集:
- 先定义你的基准温度(这里用18℃举例,你可以换成自己需要的值):
base_temperature = 18
- 创建HDD列,这里给你两种等价的写法,选你顺手的:
- 用Pandas自带的
clip方法:
df['HDD'] = (base_temperature - df['temp']).clip(lower=0)
- 用NumPy的
maximum函数:
import numpy as np df['HDD'] = np.maximum(base_temperature - df['temp'], 0)
自定义公式适配
如果你的具体计算公式和这个通用版不一样,只需要把base_temperature - df['temp']替换成你的自定义表达式,再用clip(lower=0)或者np.maximum(..., 0)确保结果不会出现负数(如果你的逻辑有这个要求的话)。比如要是需要加权或者不同的基准规则,直接调整核心计算部分就好。
内容的提问来源于stack exchange,提问作者Sean McCarthy
相关产品推荐
相关产品推荐

