如何在if条件下用值替换真/假?

2024-09-29 21:44:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在比较数据帧中两列的(子)字符串

根据这个thread的建议,如果列manual_labelprediction之间存在对应关系,我现在能够将条件设置为TRUE,如果没有对应关系,则设置为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,我希望得到colprediction中的第一个值,正如我前面所说,它可以有多个标签

期望输出:

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

建议

问候


Tags: indfargmanuallabeldalpredictionboolean
1条回答
网友
1楼 · 发布于 2024-09-29 21:44:55

如果有人需要,我会按如下方式解决问题

argument_cols = ['label_1','label_2','label_3']

boolean_idx = df[argument_cols].apply(
    lambda arg_column: df['manual_label'].combine(arg_column, lambda token, arg: token in arg)
)

selected_vals = df[argument_cols][boolean_idx]
selected_vals = selected_vals.replace(np.nan, '', regex=True)
selected_vals = selected_vals.applymap(str)
df['suggested_label'] = selected_vals["label_1"].astype(str) + selected_vals["label_2"]+ selected_vals["label_3"]

df = df.replace(r'^\s*$', np.nan, regex=True)
df.loc[df['suggested_label'].isnull(),'suggested_label'] = df['label_1']
print(df)

相关问题 更多 >

    热门问题