为了账号安全,请及时绑定邮箱和手机立即绑定

使用熊猫的 IF 和 ELIF 函数

使用熊猫的 IF 和 ELIF 函数

阿波罗的战车 2021-10-12 10:20:12
有什么更好的方法(如果有的话)来定义一个函数来检查 pandas 列是否在给定的整数范围内?我在 Pandas 数据框中有一列,我想检查这些值是否在设定范围之间。为此,我选择创建一个函数,该函数接受数据框作为参数,并使用 IF 和 ELIF 测试列是否在范围内。这在范围很小的情况下可能没问题,但是如果范围很大,则生成的 IF、ELIF 函数可能难以维护。有没有更好的方法来实现这一目标?我的代码有效-def fn(dframe):    if dframe['A'] < 125:        return 935 + 0.2 * dframe['A']    elif (dframe['A'] >= 955) and (dframe['A'] <= 974):        return 921.2 + 0.2 * (dframe['A'] - 955)    elif (dframe['A'] >= 975) and (dframe['A'] <= 1023):        return 925.2 + 0.2 * (dframe['BCCH'] - 975)    elif (dframe['A'] >= 511) and (dframe['A'] <= 885):        return 1805.2 + 0.2 * (dframe['A'] - 512)此代码按预期工作,但是如果范围很大,则生成的函数将难以管理。
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

看来你需要 np.where


import numpy as np

np.where(dframe['A'] < 125, 935 + 0.2 * dframe['A'],

       np.where(dframe['A'] >= 511) & (dframe['A'] <= 885), 1805.2 + 0.2 * (dframe['A'] - 512,

       np.where(dframe['A'] <= 974, 921.2 + 0.2 * (dframe['A'] - 955),

       np.where(dframe['A'] <= 1023, 925.2 + 0.2 * (dframe['A'] - 975),

    'Value for any other value'))))


查看完整回答
反对 回复 2021-10-12
  • 2 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信