python-if else在for循环中处理一列



我有兴趣循环通过列转换为处理过的序列
下面是两行四列数据帧的示例:

import pandas as pd
from rapidfuzz import process as process_rapid
from rapidfuzz import utils as rapid_utils
data = [['r/o ac. nephritis.  /.  nephrotic syndrome', ' ac. nephritis.  /.  nephrotic syndrome',1,'ac   nephritis      nephrotic syndrome'], [ 'sternocleidomastoid contracture','sternocleidomastoid contracture',0,"NA"]]

# Create the pandas DataFrame

df_diagnosis = pd.DataFrame(data, columns = ['diagnosis_name', 'diagnosis_name_edited','is_spell_corrected','spell_corrected_value'])

如果is_spell_corrected列大于1,我希望使用spell_corrected_value列。否则,使用diagnosis_name_edited

目前,我有以下代码可以直接使用diagnosis_name_edited列。如何对is_spell_corrected列进行if else/lambda检查?

unmapped_diag_series = (rapid_utils.default_process(d) for d in df_diagnosis['diagnosis_name_edited'].astype(str)) # characters (generator)
unmapped_processed_diagnosis = pd.Series(unmapped_diag_series) #

谢谢。

如果我说得对,请使用numpy.where:尝试这个快速解决方案

df_diagnosis['new_column'] = np.where(df_diagnosis['is_spell_corrected'] > 1, df_diagnosis['spell_corrected_value'], df_diagnosis['diagnosis_name_edited'])

最新更新