调试:数据框列引用和索引

时间:2019-01-21 20:06:54

标签: python dataframe for-loop indexing

我无法弄清楚这个错误。我认为这是我对一个数据框和一个索引的误解。另外,可能对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 个答案:

答案 0 :(得分:1)

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

我不确定您的最终目标是什么。您能否澄清一下as_df的最终结果是什么样子?包括在for循环结束之后以及整个代码完成运行之后?

答案 1 :(得分:0)

发现我的错误。

as_df=as_df.drop(as_df[column])

应该是

as_df=as_df.drop(column,axis=1)
相关问题