首页 > 解决方案 > 用字典替换 Python 条件

问题描述

如何通过在 Python 中应用字典来解决以下问题 想法是删除 if 并将其替换为字典并获得相同的结果。

def apply_fun(row,col='a'):
    if row[col] <= 5:
        val = 5
    elif row[col] <= 10:
        val = 10
    elif row[col] <= 15:
        val = 15
    elif row[col] <= 20:
        val = 20
    elif row[col] <= 25:
        val = 25        
    else:
        val = 30
    return val

values = [[12,2],[3,2],[23,2],[7,2],[19,2]]

db = pd.DataFrame(values, columns = ['a','b'])

db['new'] = db.apply(apply_fun, axis=1)

    a   b   new
0   12  2   15
1   3   2   5
2   23  2   25
3   7   2   10
4   19  2   20

标签: pythondictionary

解决方案


您只是将数字四舍五入到最接近的 5。你可以这样做:

db['new'] = db['a'].add(4).floordiv(5).mul(5)

    a   b   new
0   12  2   15
1   3   2   5
2   23  2   25
3   7   2   10
4   19  2   20

但是,如果您正在谈论检查字典的范围,那么这是不可行的,因为字典是一对一映射的。除非你想开始识别{1: 5, 2: 5, 3: 5, ...}


推荐阅读