代码之家  ›  专栏  ›  技术社区  ›  Tanner Clark

调试:数据帧列引用和索引[重复]

  •  0
  • Tanner Clark  · 技术社区  · 6 年前

    我想不出这个错误。我认为这是我对数据帧和索引的误解。另外,可能是对for循环的误解。(我习惯了matlab 对于 循环…直观地说,迭代更容易:d)

    错误如下:

    KeyError: "['United States' 'Canada' 'Mexico'] not found in axis"
    

    这发生在一行: as_df=as_df.drop(as_df[column])

    但这毫无意义…我调用的是一个单独的列,而不是整个虚拟变量集。

    可以复制并运行以下代码。我确定了。

    我的代码:

    import pandas as pd
    import numpy as np
    df=pd.DataFrame({"country": ['United States','Canada','Mexico'], "price": [23,32,21], "points": [3,4,4.5]})
    df=df[['country','price','points']]
    df2=df[['country']]
    features=df2.columns
    print(features)
    target='points'
    
    #------_-__-___---____________________
    as_df=pd.concat([df[features],df[target]],axis=1)
    #Now for Column Check
    for column in as_df[features]:
        col=as_df[[column]]
        #Categorical Data Conversion
    #This will split the countries into their own column with 1 being when it 
    #is true and 0 being when it is false
        col.select_dtypes(include='object')
        dummies=pd.get_dummies(col)
        #ML Check:
        dumcols=dummies.drop(dummies.columns[1],axis=1)
        if dumcols.shape[1] > 1:
            print(column)
            as_df=as_df.drop(as_df[column])
        else:
            dummydf=col
    as_df=pd.concat([as_df,dummydf],axis=1)
    as_df.head()
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Will Lyles    6 年前

    我会评论而不是回答,但我没有足够的声誉来这样做。(我需要澄清以帮助您,而Stack Exchange并不能“适当”地为我提供这样做的方法。)

    我不完全确定你的最终目标是什么。你能解释一下你的最终结果是什么样的吗?包括在for循环结束后,以及整个代码完成运行之后?

        2
  •  0
  •   Tanner Clark    6 年前

    发现了我的错误。

    as_df=as_df.drop(as_df[column])
    

    应该是

    as_df=as_df.drop(column,axis=1)