首页 > 解决方案 > 如何在不更改前一个条件的结果的情况下对行应用多个条件?

问题描述

我有熊猫数据框,我需要在其中应用多个条件。这是我的 df 样本

Cond           Samp        
A_B_C          Org
A_B_C          Org
A_B_C          Sea
A_B_C          Paid

我需要一个基于此条件的新列

df['New'] = df[df['Samp'] == 'Org']['Cond'].str.rsplit("_", expand=True)[0]
df['New'] = df[df['Samp'] == 'Sea']['Cond'].str.rsplit("_", expand=True)[0]
df['New'] = df[df['Samp'] == 'Paid']['Cond'].str.rsplit("_", expand=True)[2]

所需的输出:

Cond           Samp        New
A_B_C          Org         A
A_B_C          Org         A
A_B_C          Sea         A
A_B_C          Paid        C

标签: pythonpandasif-statementconditional-statements

解决方案


创建字典来映射条件:

cond = {'Org': 0, 'Sea': 0, 'Paid': 2}

df['New'] = df.apply(lambda x: x['Cond'].split('_')[cond[x['Samp']],
                     axis="columns")
>>> df
    Cond  Samp New
0  A_B_C   Org   A
1  A_B_C   Org   A
2  A_B_C   Sea   A
3  A_B_C  Paid   C

推荐阅读