我已经开始工作了,但我认为下面的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