首页 > 解决方案 > 从两个表执行计算,根据另一个列值选择一个列值

问题描述

我有两个不同的表 df_postErup 和 df_preErup。我想从 df_postErup 中获取某个月份的值,然后从 df_preErup 中扣除相应的平均值。(即,对于月份 = 3,从 df_postErup 获取值 0.394,然后从 df_preErup 获取该月 = 3 的平均值 = 0.669。然后计算差异并将其存储在名为“delta”0.394-0.669 的新列中)

我编写了以下代码,但它给了我 Nan 值,

for i in range (1,13):
df_postErup['delta'] = (df_postErup.loc[df_postErup['months'] == i, 'values']) - (df_preErup.loc[df_preErup['months'] == i, 'mean_values']) 

在此处输入图像描述

在此处输入图像描述

标签: pythonpandas

解决方案


设法解决了问题,但如果有人有更好的答案,请发布

 #Create a New empty column in df_postErup which will store the mean values for each month from df_pre

df_postErup['mean ndvi pre'] = ""
for i in range(0,12):
df_postErup.loc[df_postErup['months'] == (i + 1), ['mean ndvi pre']] = df_preErup.iloc[i,1]

#Calculate the difference, delta
df_postErup['delta'] = df_postErup['ndvi'] - df_postErup['mean ndvi pre']

推荐阅读