Я работаю, но я представляю неэффективный или неправильно написанный код pandas / python ниже, чтобы попытаться вычислить значение столбца для всех строк во фрейме данных, используя информацию из этого фрейма данных плюс другой фрейм данных, в котором я выполняю соединение-подобная операция над аналогичным столбцом из каждого фрейма данных.В df1 ниже, common_key_1 - это строка, тогда как в df2 ниже, common_key_2 - это серия строк, с которыми я бы хотел сопоставить индивидуально (любое условие).
Так что я пытаюсь сделать это иметьОперация find работает с каждой строкой в серии, а не с одной строкой, как показано ниже.Что является более правильным способом, который позволяет мне избежать цикла for?
for i in range(0, len(df1)):
key_in_df1 = predictions_df[common_key_1][i]
matching_df = df2.loc[df2[common_key_2].apply(lambda x: any((i for i in x if i.find(key_in_df1) >= 0)))]
val = matching_df[value_column].sum()
number_rows = len(matching_df)
overall_value = 0 if number_rows == 0 else val * (2.0 / 3.0) / number_rows
df1.loc[i,(column_to_set)] = overall_value