我有一系列数据帧,有些保存静态值,有些是时间序列。
我已经可以添加
我想将一个时间序列的值转置为新时间序列,并应用一个函数,该函数从原始时间序列数据帧和保存静态值的数据帧中提取值。
下面是时间序列和静态数据帧的片段。
Time series dataframe (Irradiance)
Datetime Date Time GHI DIF flagR SE SA TEMP
2017-07-01 00:11:00 01.07.2017 00:11 0 0 0 -9.39 -179.97 11.1
2017-07-01 00:26:00 01.07.2017 00:26 0 0 0 -9.33 -176.47 11.0
2017-07-01 00:41:00 01.07.2017 00:41 0 0 0 -9.14 -172.98 10.9
2017-07-01 00:56:00 01.07.2017 00:56 0 0 0 -8.83 -169.51 10.9
2017-07-01 01:11:00 01.07.2017 01:11 0 0 0 -8.40 -166.04 11.0
Static dataframe (Properties)
Bearing (degrees) Inclination (degrees)
Home ID
151631 244 29
151632 244 29
151633 184 44
我编写了一个函数,该函数要使用这两个函数中的值来填充新的数据框。
def dif(DIF, Inclination, GHI):
global Albedo
return DIF * (1 + math.cos(math.radians(Inclination)) / 2) + (GHI * Albedo * (1 - math.cos(math.radians(Inclination)) / 2))
当我尝试做同样的事情时,但是在同一数据帧中,我使用了Numpy向量化功能,所以我认为我可以使用以下代码遍历新数据帧的每一列。
for column in DIF:
DIF[column] = np.vectorize(dif)(irradiance['DIF'], properties.iloc['Inclination (degrees)'][column], irradiance['GHI'])
相反,这会引发以下错误。
TypeError: cannot do positional indexing on <class 'pandas.core.indexes.numeric.Int64Index'> with these indexers [Inclination (degrees)] of <class 'str'>
我已经检查了dtypes的Inclination(degrees)值,但是它以Int64而不是str的形式返回,所以我不确定为什么会产生此错误。
我显然在这里缺少重要的东西。是否有其他更好或更有效的替代方法?任何帮助将不胜感激。