吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1361|回复: 2
收起左侧

[求助] python pandas多列apply问题

[复制链接]
cqwcns 发表于 2020-12-5 18:57
以下代码的作用是新建一列,并根据['装维组/用户班']的数据对新列进行赋值,例如如果['装维组/用户班']包含“茂南”则新列的值=“茂南”,功能已实现。
[Python] 纯文本查看 复制代码
regions = ['茂南', '电白', '高州', '化州', '信宜']
sheetOnTheWay['区域'] = sheetOnTheWay['装维组/用户班'].apply(lambda x: '区域为空' if pd.isnull(x) else ''.join([y if x.find(y) >= 0 else '无匹配结果' for y in regions]))



但我现在想根据['装维组/用户班']、['五级地址名称']、['二级地址名称']这3列数据对新列进行赋值,即如果这3列有其中一个包含“茂南”则新列的值=“茂南”。
显然我这样写是不行的,请指教怎么写还是正确的,谢谢。

[Python] 纯文本查看 复制代码
regions = ['茂南', '电白', '高州', '化州', '信宜']
sheetOnTheWay['区域'] = sheetOnTheWay['装维组/用户班', '五级地址名称', '二级地址名称'].apply(lambda x: '区域为空' if pd.isnull(x) else ''.join([y if x.find(y) >= 0 else '无匹配结果' for y in regions]))

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

rsnodame 发表于 2020-12-6 18:59
比较复杂的处理过程不太建议用lambda匿名函数,可以考虑def一个自定义函数,这样更自由
 楼主| cqwcns 发表于 2020-12-6 19:33
rsnodame 发表于 2020-12-6 18:59
比较复杂的处理过程不太建议用lambda匿名函数,可以考虑def一个自定义函数,这样更自由

已实现
[Python] 纯文本查看 复制代码
listRegions = ['茂南', '电白', '高州', '化州', '信宜']


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

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

    for strRegion in range(len(listRegions)):
        if x.商户.find(listRegions[i]) >= 0:
            return listRegions[i]
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-1-16 14:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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