Я пытаюсь выполнить базовое условное поэлементное умножение между двумя кадрами данных.Предположим, у меня есть следующие два кадра данных:
df1 = pd.DataFrame({'A': [-0.1,0.3,-0.4, 0.8,-0.5,-0.1,0.3,-0.4, 0.8,-1.2],'B': [-0.2,0.5,0.3,-0.5,0.1,-0.2,0.5,0.3,-0.5,0.9]},index=[0, 1, 2, 3,4,5,6,7,8,9])
df2=pd.DataFrame({'C': [-0.003,0.03848,-0.04404, 0.018,-0.1515,-0.02181,0.233,-0.0044, 0.01458,-0.015],'D': [-0.0152,0.0155,0.03,-0.0155,0.0151,-0.012,0.035,0.0013,-0.0005,0.009]},index=[0, 1, 2, 3,4,5,6,7,8,9])
Идея состоит в том, чтобы умножить df1 and df2.shift(-1)
(поэлементно, а не на матричное умножение) в зависимости от значений df1.Если (df1>=0.50 or df1<=-0.50)
, тогда я умножаю df1 и df2.shift (-1).В противном случае я просто ставлю 0.
В этом примере желаемым результатом должно быть следующее (имена столбцов - это имена столбцов df1, а также индекса df1):
df3=pd.DataFrame({'A': [0,0,0, -0.1212,0.010905,0,0,0, -0.012,'NaN'],'B': [0,0.015,0,-0.00755,0,0,0.00065,0,-0.0045,'NaN']},index=[0, 1, 2, 3,4,5,6,7,8,9])
Iпопробовал следующий код:
import numpy as np
import pandas as pd
df3=np.where((df1>=0.50 or df1 <=-0.50),df1*df2.shift(-1),0)
И я получаю Истинное значение DataFrame неоднозначно.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().Спасибо.