[英]How do I solve this NaN error by this function?
输入:
#Fixed-mono-cell temperature
parameters = pvlib.temperature.TEMPERATURE_MODEL_PARAMETERS['sapm']['open_rack_glass_glass'] #to extract specfic parameter
cell_temperature_mono_fixed = pvlib.temperature.sapm_cell(effective_irrad_mono_fixed,
df['T_a'],
df['W_s'],
**parameters)
cell_temperature_mono_fixed
输出:
2005-01-01 01:00:00 NaN 2005-01-01 02:00:00 NaN 2005-01-01 03:00:00 NaN 2005-01-01 04:00:00 NaN 2005-01-01 05:00:00 NaN .. 8755 NaN 8756 NaN 8757 NaN 8758 NaN 8759 NaN Length: 17520, dtype: float64
cell_temperature_mono_fixed.plot
输出:
/Users/charlielinck/opt/anaconda3/lib/python3.9/site-packages/pandas/core/indexes/base.py:4024: RuntimeWarning: 'Extra data information:
df: dataframe
date_time Sun_Az Sun_alt GHI DHI DNI T_a W_s 0 2005-01-01 01:00:00 17.9 90.0 0.0 0.0 0.0 15.5 13.3 1 2005-01-01 02:00:00 54.8 90.0 0.0 0.0 0.0 17.0 14.5 2 2005-01-01 03:00:00 73.7 90.0 0.0 0.0 0.0 16.7 14.0 3 2005-01-01 04:00:00 85.7 90.0 0.0 0.0 0.0 16.7 14.2 4 2005-01-01 05:00:00 94.9 90.0 0.0 0.0 0.0 16.7 14.1 5 2005-01-01 06:00:00 103.5 90.0 0.0 0.0 0.0 16.6 14.3 6 2005-01-01 07:00:00 111.6 90.0 0.0 0.0 0.0 16.5 13.8 7 2005-01-01 08:00:00 120.5 89.6 1.0 1.0 0.0 16.6 16.0 8 2005-01-01 09:00:00 130.5 79.9 27.0 27.0 0.0 16.8 16.5 9 2005-01-01 10:00:00 141.8 71.7 55.0 55.0 0.0 16.9 16.9 10 2005-01-01 11:00:00 154.9 65.5 83.0 83.0 0.0 17.0 17.2 11 2005-01-01 12:00:00 169.8 61.9 114.0 114.0 0.0 17.4 17.9 12 2005-01-01 13:00:00 185.2 61.4 110.0 110.0 0.0 17.5 18.0 13 2005-01-01 14:00:00 200.4 64.0 94.0 94.0 0.0 17.5 17.8 14 2005-01-01 15:00:00 214.3 69.5 70.0 70.0 0.0 17.5 17.6 15 2005-01-01 16:00:00 226.3 77.2 38.0 38.0 0.0 17.2 17.0 16 2005-01-01 17:00:00 236.5 86.4 4.0 4.0 0.0 16.7 16.3 17 2005-01-01 18:00:00 245.5 90.0 0.0 0.0 0.0 16.0 14.5 18 2005-01-01 19:00:00 254.2 90.0 0.0 0.0 0.0 14.9 13.0 19 2005-01-01 20:00:00 262.3 90.0 0.0 0.0 0.0 16.0 14.1 20 2005-01-01 21:00:00 271.3 90.0 0.0 0.0 0.0 15.1 13.3 21 2005-01-01 22:00:00 282.1 90.0 0.0 0.0 0.0 15.5 13.2 22 2005-01-01 23:00:00 298.1 90.0 0.0 0.0 0.0 15.6 13.0 23 2005-01-02 00:00:00 327.5 90.0 0.0 0.0 0.0 15.8 13.1
df['T_a']
is temperature data,df['W_s']
is windspeed data
effective_irrad_mono_fixed.head(24)
date_time 2005-01-01 01:00:00 0.000000 2005-01-01 02:00:00 0.000000 2005-01-01 03:00:00 0.000000 2005-01-01 04:00:00 0.000000 2005-01-01 05:00:00 0.000000 2005-01-01 06:00:00 0.000000 2005-01-01 07:00:00 0.000000 2005-01-01 08:00:00 0.936690 2005-01-01 09:00:00 25.168996 2005-01-01 10:00:00 51.165091 2005-01-01 11:00:00 77.354266 2005-01-01 12:00:00 108.002486 2005-01-01 13:00:00 103.809820 2005-01-01 14:00:00 88.138705 2005-01-01 15:00:00 65.051870 2005-01-01 16:00:00 35.390518 2005-01-01 17:00:00 3.742581 2005-01-01 18:00:00 0.000000 2005-01-01 19:00:00 0.000000 2005-01-01 20:00:00 0.000000 2005-01-01 21:00:00 0.000000 2005-01-01 22:00:00 0.000000 2005-01-01 23:00:00 0.000000 2005-01-02 00:00:00 0.000000
问题:我不明白,如果我只是运行这个函数,我只会得到 NaN 值,它可能与时间戳有关。 我相信当我想绘制函数时,这也会导致 RunTimeWarning。
这不是真正的 pvlib 问题,更多的是 pandas 问题。 问题是您的输入时间序列对象不在一致的索引上:辐照度输入具有pandas.DatetimeIndex
而温度和风速输入具有pandas.RangeIndex
(请参阅从您的df
打印出的索引)。 Series 上的数学运算是通过对齐索引元素并在不对齐的地方替换 NaN 来完成的。 例如,在此处查看仅共享索引元素如何对应于非 NaN 值:
In [46]: a = pd.Series([1, 2, 3], index=[1, 2, 3])
...: b = pd.Series([2, 3, 4], index=[2, 3, 4])
...: a*b
Out[46]:
1 NaN
2 4.0
3 9.0
4 NaN
dtype: float64
如果您检查cell_temperature_mono_fixed
的索引,您会看到它同时具有时间戳(来自辐照度输入)和整数(来自其他两个),因此它采用索引的并集,但只填充交点的值(其中在这种情况下为空)。
因此,要解决您的问题,您应该确保所有输入都在一致的索引上。 最简单的方法可能是在数据帧级别,即df = df.set_index('date_time')
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.