我正在比较数据框中两列的(子)字符串。
通过遵循该线程manual_label的建议,如果列之间存在对应关系,我现在可以将条件设置为 TRUE,如果没有对应关系,则设置prediction为 FALSE。
这是我使用的代码的快照:
argument_cols = ['prediction']
boolean_idx = df[argument_cols].apply(
lambda arg_column: df['manual_label'].combine(arg_column, lambda token, arg: token in arg)
)
df['boolean_idx'] = boolean_idx
pd.options.display.width=None
print(df)
df.to_csv('csv_file_w_pred.csv',sep=',',index=False)
生成的数据框如下所示:
subject manual_label prediction value boolean_idx
A __label__Religione_e_Magia (__label__Bibbia_storie_dal_Vecchio_e_dal_Nuov... ... False
B __label__Religione_e_Magia (__label__Religione_e_Magia,__label__Storia) ... True
C __label__Mitologia_classica_e_storia_antica (__label__Societa_civilizzazione_cultura,) ... False
D __label__Essere_umano_uomo_in_generale (__label__Essere_umano_uomo_in_generale,) ... True
E __label__Religione_e_Magia (__label__Religione_e_Magia,) ... True
该列prediction可以有多个标签。
但是,如果条件是True我想要满足条件的值,如果条件是False我想要 col 的第一个值 prediction,正如我之前所说,它可以有多个标签。
期望的输出:
subject manual_label prediction value boolean_idx
A __label__Religione_e_Magia (__label__Bibbia_storie_dal_Vecchio_e_dal_Nuov... ... __label__Bibbia_storie_dal_Vecchio_e_dal_Nuovo_Testamento
B __label__Religione_e_Magia (__label__Religione_e_Magia,__label__Storia) ... __label__Religione_e_Magia
C __label__Mitologia_classica_e_storia_antica (__label__Societa_civilizzazione_cultura,) ... __label__Societa_civilizzazione_cultura
D __label__Essere_umano_uomo_in_generale (__label__Essere_umano_uomo_in_generale,) ... __label__Essere_umano_uomo_in_generale
E __label__Religione_e_Magia (__label__Religione_e_Magia,) ... __label__Religione_e_Magia
建议?
问候