Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于匹配从另一个数据帧计算数据帧字段值_Python_Pandas_Dataframe - Fatal编程技术网

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()
not
sum[]
dfEnergy['hour'。值[i]
是否在
'hour'
之后忘记了
]
?@QuangHoang是的,我将更新错误消息。谢谢<代码>总和()不是
sum[]