为了账号安全,请及时绑定邮箱和手机立即绑定

标签未包含在轴错误中-Pandas DataFrame

标签未包含在轴错误中-Pandas DataFrame

肥皂起泡泡 2021-04-20 13:15:18
我有一个名为df的数据框,看起来像-pageno     entity          code         rawentity 17727425   SAUDI           CBCNTRY      saudi 17727425   GARRA           DRWRNAME     garra17727425   PO BOX          RBCNTRY      po box 17727425   NEW ZEALAND     DRWRCNTRY    new zealand我还有一个包含国家名称的国家列表,它是'list'类型的。我试图仅保留那些代码为-CBCNTRY或RBCNTRY或DRWRCNTRY的值,并且该实体应位于countrylist中。我写的代码是-        for row in df.itertuples():            if(row.code in ['DRWRCNTRY', 'RBCNTRY', 'CBCNTRY']):                if(row.entity not in countrylist):                    df.drop((row.index), inplace=True)但我收到以下错误-Error is: labels [<built-in method index of Pandas object at 0x0000020A1BCE4EB8>] not contained in axis我只想知道为什么我的方法是错误的,除了这种方法之外,还有什么我可以做的更好的事情了。我已经搜索了此错误,但无法获得满意的答案。
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

正如Gerardo所建议的,使用pd.isin布尔运算符来使用和组合表达式:


countrylist = ['SAUDI']

codelist = ['DRWRCNTRY', 'RBCNTRY', 'CBCNTRY']

df = df[(df['code'].isin(codelist)) & (df['entity'].isin(countrylist))]

结果是


     pageno entity     code rawentity

0  17727425  SAUDI  CBCNTRY     saudi


查看完整回答
反对 回复 2021-04-27
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

在处理系列时,可以使用pd.isin。例如,您可以通过执行以下操作来实现:

df = df[df['code'].isin(['DRWRCNTRY', 'RBCNTRY', 'CBCNTRY'])]


查看完整回答
反对 回复 2021-04-27
  • 3 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信