Python 基于匹配从另一个数据帧计算数据帧字段值
我试图使用一个数据帧的值来计算相同日期和小时的新数据帧的值。但是,我在语法方面有困难: 我想查看我的Python 基于匹配从另一个数据帧计算数据帧字段值,python,pandas,dataframe,Python,Pandas,Dataframe,我试图使用一个数据帧的值来计算相同日期和小时的新数据帧的值。但是,我在语法方面有困难: 我想查看我的dfEnergy数据帧,对于其中的每个日期和小时,我想使用df数据帧中的“功率”值来计算dfEnergy数据帧中的“能量”。我尝试过使用函数,但由于某种原因,我无法让它工作 def find_power(date, hour, df): mask = np.logical_and.reduce([ df['date'] ==date, df['hour']
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
我在论坛的帮助下做到了这一点。以下是解决方案:
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
dfEnergy['hour'。值[i]
您是否在'hour'
之后忘记了一个]
?@QuangHoang是的,我将更新错误消息。谢谢sum()
notsum[]
dfEnergy['hour'。值[i]
是否在'hour'
之后忘记了]
?@QuangHoang是的,我将更新错误消息。谢谢<代码>总和()不是sum[]
。