t__小白 2022-07-25 21:33 采纳率: 0%
浏览 63

python里loc函数取反问题

问题遇到的现象和发生背景

python里分析企业数据集,如果公司类型为民营,则定义新列‘companytype’='民营‘,国企为国企,合资为合资,否则为其他。

问题相关代码,请勿粘贴截图

1、wagedata.loc[~(wagedata['7'].str.contains("民营|国企|合资",na=False)),'companytype']='其他'
2、wagedata.loc[(wagedata['7'].str.contains("民营")),'companytype']='民营'
3、wagedata.loc[(wagedata['7'].str.contains("国企")),'companytype']='国企'
4、wagedata.loc[(wagedata['7'].str.contains("合资")),'companytype']='合资'

运行结果及报错内容

按照上述1 2 3 4运行,没问题,企业类型是对的。
但是,如果把第一行代码放到最后,即运行2 3 4 1,则所有公司类型均为“其他”了。为什么,请教解答一下。

我的解答思路和尝试过的方法

我的理解:1为取反,先执行2 3 4,再执行1,应该也没问题,不知道为什么全变成其他。

  • 写回答

1条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-07-25 23:07
    关注

    说明你第一句就匹配了所有啊,按照1、2、3、4运行没问题,是因为第1句把所有的都改成“其他”,然后后面2、3、4又改回来了。而先运行2、3、4的话,到第一句又把所有都改成“其他”了。
    原因在于匹配的字符串不正确,你这里用的是中文的分隔符,换成英文的试试呢。"民营|国企|合资" ==> "民营|国企|合资"

    评论

报告相同问题?

问题事件

  • 创建了问题 7月25日

悬赏问题

  • ¥15 在不同的执行界面调用同一个页面
  • ¥20 基于51单片机的数字频率计
  • ¥50 M3T长焦相机如何标定以及正射影像拼接问题
  • ¥15 keepalived的虚拟VIP地址 ping -s 发包测试,只能通过1472字节以下的数据包(相关搜索:静态路由)
  • ¥20 关于#stm32#的问题:STM32串口发送问题,偶校验(even),发送5A 41 FB 20.烧录程序后发现串口助手读到的是5A 41 7B A0
  • ¥15 C++map释放不掉
  • ¥15 Mabatis查询数据
  • ¥15 想知道lingo目标函数中求和公式上标是变量情况如何求解
  • ¥15 关于E22-400T22S的LORA模块的通信问题
  • ¥15 求用二阶有源低通滤波将3khz方波转为正弦波的电路