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

2024-09-30 14:30:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想遍历我的dfEnergy数据帧,对于其中的每个日期和小时,我想使用df dataframe中的“power”值,来计算dfEnergy dataframe中的“energy”。我试过使用函数,但由于某些原因我不能使它工作

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\u tmp随着每次迭代而增加,对于dfEnergy['energy']值,我得到的结果是从0到4的整数,而值应该是实数。每小时有4个值,我想从中计算能量,所以我怀疑这些值正在被计算


Tags: 数据函数dataframedfdate语法maskfind
1条回答
网友
1楼 · 发布于 2024-09-30 14:30:32

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

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

相关问题 更多 >