【问题标题】:labels not contained in axis error - pandas dataframe轴错误中不包含标签 - 熊猫数据框
【发布时间】:2018-12-17 07:12:54
【问题描述】:

我有一个名为 df 的数据框,它看起来像 -

pageno     entity          code         rawentity 
17727425   SAUDI           CBCNTRY      saudi 
17727425   GARRA           DRWRNAME     garra
17727425   PO BOX          RBCNTRY      po box 
17727425   NEW ZEALAND     DRWRCNTRY    new zealand

我还有一个包含国家名称的国家列表。它是“列表”类型。

我试图只保留那些代码为 - CBCNTRYRBCNTRYDRWRCNTRY 的值,并且实体应位于国家/地区列表

我写的代码是-

        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

我只是想知道为什么我的方法是错误的,除了这个方法之外我还能做些什么更好的事情。

我已经搜索过这个错误,但我无法得到满意的答案。

【问题讨论】:

  • 这里的国家列表是什么?
  • 您在遍历数据框时正在删除行。你不应该这样做。请参阅@chuni0r 的回答。

标签: python python-3.x pandas dataframe


【解决方案1】:

按照 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

【讨论】:

    【解决方案2】:

    当您使用系列时,您可以使用pd.isin。例如,您想要的可以通过以下方式实现:

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

    【讨论】:

      【解决方案3】:

      您可以使用np.whereisin

      假设您有一个名为 countrylist 的列表,其中包含 SAUDI

      countrylist = ['SAUDI']
      df['code'] = np.where((df['code'] == 'CBCNTRY')| (df['code'] == 'RBCNTRY') | (df['code'] == 'DRWRCNTRY'),
                            df['code'], np.nan
                            )
      
      df['code'] = np.where(df['entity'].isin(countrylist), df['code'], np.nan)
      
      df.dropna(how='any', inplace= True)
      
      print(df)
      
        pageno entity     code rawentity
      17727425  SAUDI  CBCNTRY     saudi
      

      【讨论】:

        猜你喜欢
        • 2016-07-07
        • 1970-01-01
        • 2016-10-12
        • 1970-01-01
        • 2014-04-27
        • 2018-12-06
        • 2019-06-12
        • 2020-01-11
        • 2016-04-10
        相关资源
        最近更新 更多