python - for 循环中的 if-else 处理一列
python - if-else in a for loop processing one column
我有兴趣循环遍历列以转换为已处理的系列。
以下是两行四列数据框的示例:
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
列。我如何进入 if-else/lambda 检查 is_spell_corrected
列?
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'])
我有兴趣循环遍历列以转换为已处理的系列。
以下是两行四列数据框的示例:
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
列。我如何进入 if-else/lambda 检查 is_spell_corrected
列?
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'])