У меня есть 2 Pandas фреймов данных.
df1:
stringColumn
0 see ya
1 yo
2 mkey
df2:
name alias1 alias2
0 goodbye see ya bye
1 OK cool mkey
2 hello hey yo
Я хотел бы эффективным способом go через значения столбцов в df1 ['stringColumn'], найти Индекс строки, где значение из df1 встречается в df2 и обменивается им с соответствующим значением из столбцов df2 ['name'].
Конечный результат будет:
df1:
stringColumn
0 goodbye
1 hello
2 OK
В настоящее время Я делаю:
for index, row in df1.iterrows():
row['stringColumn'] = df2[df2.apply(lambda rowAlias: rowAlias.astype(str).str.contains(row['stringColumn'], case=False).any(), axis=1)]['name'].values[0]
Это работает, но очень медленно, особенно потому, что у меня ~ 5000 строк в df1 и около 100 строк и 10 столбцов в df2.
Должно быть что-то попроще и быстрее, чем это чудовище.