如何获得两个条件语句以将信息提取到同一列?

问题描述

我需要在两个条件下进行计算,但输出必须出现在同一列Erisa (Local)中。 我需要检查列ERISA Percentage中是否有一个值,如果是,则将该值乘以另一列“净额(本地)”。 如果ERISA Percentage列没有值,我想检查ERISA Status列中是否有特定单词Erisa。如果该行包含该单词,那么我需要提取Net Amount Local列中的值。

我尝试了一个elif语句和一个or语句,但是遇到了无效的语法错误。有人知道我应该对下面的代码进行什么修改吗?

ecdi['Erisa (Local)'] = ecdi.apply(lambda x: x['Net Amount (Local)']  * x['ERISA Percentage']/100 if x['ERISA Percentage']>0 and x['ERISA Status'] == "Erisa"

elif ecdi['Erisa (Local)'] = ecdi.apply(lambda x: x['Net Amount (Local)'] if x['ERISA Percentage'] == 0 and x['ERISA Status'] == "Erisa"                        
                                                               else 0,axis=1)

解决方法

最佳实践是作为性能的矢量化计算。因此,我使用了np.where

  1. 颠倒了您的逻辑,当 percentage 小于等于零且 status 不是 Erisa 时,默认为 em>
  2. 如果百分比> ,则为
  3. 标准计算
  4. 只剩下一种情况,即 Erisa 和百分比零
  5. 为了很好地衡量,我添加了 check 列,以更好地测试逻辑是否按定义工作了
r = 10
df = pd.DataFrame({"ERISA Percentage":[random.randint(-25,100) for i in range(r)],"Net Amount (Local)":[random.randint(50,125) for i in range(r)],"ERISA Status":[["Erisa","a","b"][random.randint(0,2)] for i in range(r)]
})

df = df.assign(**{"Erisa (Local)":lambda dfa: 
             np.where((dfa["ERISA Percentage"]<=0) & (dfa["ERISA Status"]!="Erisa"),np.where(dfa["ERISA Percentage"]>0,dfa["ERISA Percentage"]/100*dfa["Net Amount (Local)"],dfa["Net Amount (Local)"])),"check":lambda dfa: dfa["Erisa (Local)"]==dfa["Net Amount (Local)"]
            })

print(df.to_string(index=False))

输出

 ERISA Percentage  Net Amount (Local) ERISA Status  Erisa (Local)  check
               79                  56        Erisa          44.24  False
               68                 124            b          84.32  False
               33                 124        Erisa          40.92  False
              -21                 100            b           0.00  False
               42                 124            b          52.08  False
               -5                  76            b           0.00  False
               38                  95        Erisa          36.10  False
               20                 109            b          21.80  False
               55                  63            a          34.65  False
              -13                 106        Erisa         106.00   True

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...