首页 > 解决方案 > 熊猫检查一列中的条件并在另一列中填充数据

问题描述

我有一个数据框如下:

        State       Time           
        Approved    15 hours    
        Approved    NaT      
        Rejected    NaT

我想要某种逻辑来检查状态列中的值。如果值为“拒绝”且时间值为“NaT”,则在新列中将其替换为 N/A。如果值为“已批准”且时间值为“NaT”,则在新列中将其替换为“错误”。

最终结果应如下所示:

        State   Time           Final
        Approved    15 hours    15 hours
        Approved    NaT        error
        Rejected    NaT         N/A

简而言之,我希望能够对数据框中的各种数据列进行比较(if/else/switch 之类的),并在同一数据框中的列中填充值。

标签: pythonpandasdataframe

解决方案


当您需要应用多个条件时使用np.select()

m1 = (df['State'] == 'Rejected') & (df['Time'] == 'NaT')
m2 = (df['State'] == 'Approved') & (df['Time'] == 'NaT')

df['final'] = np.select(condlist=[m1,m2],
                        choicelist=['N/A','error'],
                        default=df['Time'])
print(df)
 State          Time     final
0  Approved  15 hours  15 hours
1  Approved       NaT     error
2  Rejected       NaT       N/A

推荐阅读