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