Python每日一记196>>>pandas.core.indexing.IndexingError: Too many indexers

以下代码出现了pandas.core.indexing.IndexingError: Too many indexers问题

import pandas as pd
import numpy as np
# data_2018=pd.read_excel('E:\\ywj严文杰备份\\带时间消费明细-持续更新\\18年消费明细.xlsx')
data_2019=pd.read_excel('E:\\ywj严文杰备份\\带时间消费明细-持续更新\\19年-1214.xlsx')
data_opid=pd.read_excel('E:\\ywj严文杰备份\\带时间消费明细-持续更新\\2019-12-15 微信会员用户.xlsx')
data_chaoshi=pd.read_excel('E:\\ywj严文杰备份\\带时间消费明细-持续更新\\超市会员消费-20191214.xlsx')
data=pd.concat([data_2019,data_chaoshi],axis=0)
data_wuphone=data.loc[data['手机号码'].isnull()]
print(data_wuphone.isnull().sum())
data_youphone=data.loc[data['手机号码'].notnull()]
data_wuphone=pd.merge(data_wuphone.loc[:,[x for x in data_wuphone.columns if x!='手机号码']],data_opid.loc[:,'卡号','手机号码']
                      .dropna().drop_duplicates(subset=['卡号']).drop_duplicates(subset=['手机号码']),on='卡号',how='left')
data=pd.concat([data_youphone,data_wuphone],axis=0,join='outer')
print(data_wuphone.isnull().sum())

在这里插入图片描述
在这里插入图片描述
由以上源代码的解释,大概可以理解为如果维度大于本身维度,就报错。
然后我们去看看出问题的代码:

data_wuphone=pd.merge(data_wuphone.loc[:,[x for x in data_wuphone.columns if x!='手机号码']],data_opid.loc[:,'卡号','手机号码']

我们发现其实就是下面这一点:

data_opid.loc[:,'卡号','手机号码']

应该修改为下面的代码,也就是说多列要用中括号阔起来。

data_opid.loc[:,['卡号','手机号码']]
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值