基于匹配从另一个数据帧计算数据帧字段值



我正在尝试使用一个数据帧的值来计算同一日期和时间的新数据帧的值。但是,我在语法方面遇到困难:

我想遍历我的dfEnergy数据帧,对于其中的每个日期和时间,我想使用 df 数据帧中的"功率"值来计算 dfEnergy 数据帧中的"能量"。我尝试过使用函数,但由于某种原因我无法让它工作。

def find_power(date, hour, df):
mask = np.logical_and.reduce([
df['date'] ==date,
df['hour'] == hour
])
df_tmp = df.loc[mask, :]
energy = sum(0.25*df_tmp['power'])
df_tmp.iloc[0:0]
return energy
#
## create result
for i in range (1, len(dfEnergy)):
date = dfEnergy['date'].values[i]
hour = dfEnergy['hour'].values[i]
dfEnergy['energy'].values[i]=find_power(date,hour,df)

但是,df_tmp随着每次迭代而增加,对于dfEnergy['energy']值,我得到的结果是从 0 到 4 的整数,而该值应该是实数。每个小时都有 4 个值,我想从中计算能量,所以我怀疑值正在被计算。

我在论坛的帮助下设法做到了这一点。这是解决方案:

def find_power(date, hour, df):
mask = 0
mask = np.logical_and.reduce([
df['date'] ==date,
df['hour'] == hour
])
df_tmp = df.loc[mask, :]
energy = sum(0.25*df_tmp['power'])
df_tmp.iloc[0:0]
return energy
#
## create result
for i in range (1, len(dfEnergy)):
date = dfEnergy['date'].values[i]
hour = dfEnergy['hour'].values[i]
energy1 = find_power(date,hour,df)
dfEnergy.iloc[i,dfEnergy.columns.get_loc('energy')] = energy1

最新更新