cqwcns 发表于 2020-12-6 19:04

python按优先顺序循环对比多个值

如下代码的作用是先循环listRegions对比x.范围,如果符合条件直接返回,否则,同理先后对比x.地址、x.商户。

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

import numpy as np
import pandas as pd

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


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

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

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

咸鱼灭 发表于 2020-12-6 20:00

if判断写在同一个循环不久行了

luanshils 发表于 2020-12-6 20:48

对啊,为啥不写在一个for循环里,这每一个循环就只做一件事情,可能效率会低一些吧

dreamfrog 发表于 2020-12-6 21:31

用 for 循环可以不?楼主可以尝试下

cqwcns 发表于 2020-12-7 09:17

已解决

# 声明变量
listRegions = ['茂南', '电白', '高州', '化州', '信宜']


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

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

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


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

...

页: [1]
查看完整版本: python按优先顺序循环对比多个值