Имейте ABC с 10 рядами и XYZ с 22550 рядами.
дата-фрейм ABC значений:
0 1 2
0 sun is rising | UNKNOWN | 1465465
1 micheal has arrived | UNKNOWN | 324654
2 goal has been scored | UNKNOWN | 547854
и другие значения XYZ
0 1
0 sun | password1
1 goal | password2
....
....
.....
....
22550
22551 micheal | password3
как отобразить XYZ с помощью (солнце, цель и micheal) ABC и, таким образом,1 с паролем заменит UNKNOWN 1 в выводе ABC
, в котором я нуждаюсь
0 1 2
0 sun is rising | password1 | 1465465
1 micheal has arrived | password3 | 324654
2 goal has been scored| password2 | 547854
, пробовал ниже и получаю соответствующие ошибки:
d = dict(zip(XYZ[0],XYZ[1]))
pat = (r'({})'.format('|'.join(d.keys())))
ABC[1]=ABC[0].str.extract(pat,expand=False).map(d)
print(ABC)
ошибка: Ошибка типа: элемент последовательности 16069: ожидаемый экземпляр str, найдено с плавающей запятой
from itertools import chain
abc.loc[:,1] = list(chain(*[xyz.loc[abc[0].str.contains(i),1] for i in xyz[0]]))
ошибка: IndexingError: в качестве индексатора предоставлена недопустимая логическая серия (индекс логической серии и индексированного объекта не соответствует
d = dict(zip(XYZ[0], XYZ[1]))
ABC[1] = [next(d.get(y) for y in x.split() if y in d) for x in ABC[0]]
print (ABC)
ошибка: StopIteration: