python - 用字典替换 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
解决方案
您只是将数字四舍五入到最接近的 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, ...}
。
推荐阅读
- python - 具有固定系数的特征的多元线性回归
- sharepoint - 如何获得更新 SharePoint 列表或库中的文件附件的流程?
- sql - 将列添加到 SQL 查询并按 min(date) 和 sum(price) 过滤
- java - Spring Boot-注入依赖作为方法参数,而不是使用自动装配的依赖
- quickbooks-online - 如何使用 REST 或 SDK 将数据发布到 QuickBook Online
- google-drive-api - 关于“向所有相关团队云端硬盘字段的迁移请求”
- python - 如何有效地使用 python pool.imap_unordered?
- json - Sequelizer - JSON 中第 65 位的意外标记 z
- c# - 无法反序列化当前 JSON.Net 数组 C#
- mysql - MySQL Regex 如果字符串在 5 位数字后包含连字符