У меня есть два больших фрейма данных, и я хочу сравнить первое с двумя критериями во втором.
Однако я хочу, чтобы первый критерий соответствовал всем значениям в соответствующем столбце второго, тогда как я хочу, чтобы второй критерий был извлечен из определенной строки второго и сопоставлен с конкретным значениемпервый.
Я не хочу перезаписывать все значения со второго на первое, только когда они соответствуют определенным критериям.В приведенном ниже примере я хотел бы перезаписать z в df1 ['output'], но x нужно оставить.(Это имеет смысл в моем более сложном случае.)
Я не могу понять, как применить это ко всему фрейму данных, поскольку, конечно, python выдает ошибку при попытке сравнить одно значение с рядом.
Вот мой фиктивный код:
import pandas as pd
import numpy as np
criteria1 = np.random.normal(size = 100)
criteria2 = ['y', 'n'] * 50
output = ['z', 'x'] * 50
d = {'criteria1': criteria1, 'criteria2': criteria2}
d1 = {'criteria1': criteria1, 'output': output}
df1 = pd.DataFrame(d1, columns = ['criteria1', 'output'])
df2 = pd.DataFrame(d, columns = ['criteria1', 'criteria2'])
def dbl_match(x, y):
if ((x['criteria1'] in y['criteria1'].values) & (y['criteria2'] == 'y')):
temp = 'hit'
else:
temp = x['output']
return(temp)
df1['output'] = df1.apply(dbl_match, 1, y = df2)
РЕДАКТИРОВАТЬ: Отметить, что два фактических кадра в моем реальном случае не имеют одинаковую длину.