吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1539|回复: 3
收起左侧

[Python 转载] python按优先顺序循环对比多个值

[复制链接]
cqwcns 发表于 2020-12-6 19:04
如下代码的作用是先循环listRegions对比x.范围,如果符合条件直接返回,否则,同理先后对比x.地址、x.商户。

功能虽然是实现了?但感觉这个代码很傻,各位有什么优化建议?谢谢。

[Python] 纯文本查看 复制代码
import numpy as np
import pandas as pd

listRegions = ['茂南', '高州', '信宜', '化州']


def getRegion(x):
    for i in range(len(listRegions)):
        if x.范围.find(listRegions[i]) >= 0:
            return listRegions[i]

    for i in range(len(listRegions)):
        if x.地址.find(listRegions[i]) >= 0:
            return listRegions[i]

    for i in range(len(listRegions)):
        if x.商户.find(listRegions[i]) >= 0:
            return listRegions[i]

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

咸鱼灭 发表于 2020-12-6 20:00
if判断写在同一个循环不久行了
luanshils 发表于 2020-12-6 20:48
对啊,为啥不写在一个for循环里,这每一个循环就只做一件事情,可能效率会低一些吧
dreamfrog 发表于 2020-12-6 21:31
 楼主| cqwcns 发表于 2020-12-7 09:17
已解决

[Python] 纯文本查看 复制代码
# 声明变量
listRegions = ['茂南', '电白', '高州', '化州', '信宜']


# 获得区域函数
def getRegion(x):
    for strRegion in range(len(listRegions)):
        if str(x.装维组用户班).find(listRegions[strRegion]) >= 0:
            return listRegions[strRegion]

    for strRegion in range(len(listRegions)):
        if str(x.五级地址名称).find(listRegions[strRegion]) >= 0:
            return listRegions[strRegion]

    for strRegion in range(len(listRegions)):
        if str(x.二级地址名称).find(listRegions[strRegion]) >= 0:
            return listRegions[strRegion]


...
# 调用
sheetOnTheWay['区域'] = sheetOnTheWay.apply(lambda x: getRegion(x), axis=1)

...

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 22:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表