Я работаю с двумя фреймами данных df1
, df2
в формате Широта / Долгота / Значение.
print(df1)
0 1 2
0 -85 -175 1.8
1 -80 -170 1.6
..
print(df2)
0 1 2
0 -70 -150 2.5
1 -80 -170 2.0
2 -85 -175 3.0
..
Я бы хотел умножить df1[2] by df2[2] if df1[0] = df2[0] and df1[1] = [1]
. Я пробовал использовать следующее:
df1['multiplied']=np.where((df1[0]==df2[0],df1[2]*df2[2],np.nan) #if column 1 of df1 equals column 1
#of df2, multiply. Else give NaN
Мне известно, что я пренебрегаю вторым условием в этом примере. Обратной стороной является то, что сравнение значений столбцов осуществляется поэлементно (мои данные широты и долготы не сортируются). Также другой размер df вызывает ошибку «Можно сравнивать только объекты Series с одинаковой меткой» .
В другом подходе я попытался проверить, совпадают ли df1[0]
и df2[0]
, и дать вывести новый df, соответствующий критериям:
dfnew=df1.loc[df1[0]==df2[0]]
Это привело меня к той же ошибке, что и выше.
Интересно, есть ли у вас какие-либо советы о том, как применять условные вычисления к несортированным фреймам данных разного размера?