df.loc[df[].index,] df.loc[,] 关于df.loc[] 的问题。df.loc 容易出现的错误 下标筛选问题

qq.loc[qq[(qq.period_week>=0108) | (qq.member_no.isin(pc.member_no))].index,'code'] = 4566
qq.loc[(qq.period_week>=0108) | (qq.member_no.isin(pc.member_no)),'code'] = 4566

这2者看似计算逻辑一样,但其实有区别的,比如:
member_no period_week
1 ZA28210818777 0108
1 UM51210819108 0100

#下面只有第一行符合条件,用第二种写法就只会选中第一行来改变
member_no period_week code
1 ZA28210818777 0108 4566
1 UM51210819108 0100 NaN

但第一种写法是选中第一行的index,由于第二行的index也是1,所以就把2行都选中并改变code==4566,这显然非我本意。
member_no period_week code
1 ZA28210818777 0108 4566
1 UM51210819108 0100 4566

所以第一种写法必须建立在df.index 不重复的基础上,否则它就会把不符合筛选条件但index重复的数组也选中了!!

建议用第二种写法,稳妥一点。

qq.loc[(qq.period_week>=0108) | (qq.member_no.isin(pc.member_no)),'code'] = 4566
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值