键错误: 'not found in index'创建的虚拟变量在索引中找不到



我正在处理一个逻辑回归问题。我根据另一列中的信息创建了两个新变量(如果值高于或低于阈值,则给出值"gt40"(。然后,我必须为"DIABETES"、"bmi_cat"one_answers"albumin_cat"变量创建伪变量。这一切都很好,我可以打印一个头/导出一个符合我需要的csv。

然后,当我试图实际运行逻辑回归模型时,我得到了以下错误:

X = new_df[['Age','Sex','SMOKE', 'DIABETES_NO', 'DIABETES_INSULIN', 'DIABETES_NON-INSULIN', 'bmi_cat_gte40',
'bmi_catlt40','bmi_cat0','albumin_catgt3.5', 'albumin_catlt3.5','ablumin_cat0']]
y = new_df['Mortality']
#Create train, test, split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3)
#Logistic Regression Model
logreg = LogisticRegression()
logreg.fit(X_train, y_train)

然后我得到以下错误:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-22-88ad326a3d1e> in <module>
1 #Create X and y
2 X = new_df[['Age','Sex','SMOKE', 'DIABETES_NO', 'DIABETES_INSULIN', 'DIABETES_NON-INSULIN', 'bmi_cat_gte40',
----> 3            'bmi_catlt40','bmi_cat0','albumin_catgt3.5', 'albumin_catlt3.5','ablumin_cat0']]
4 
5 y = new_df['Mortality']
E:UsersdavidwoolAnaconda3libsite-packagespandascoreframe.py in __getitem__(self, key)
2680         if isinstance(key, (Series, np.ndarray, Index, list)):
2681             # either boolean or fancy integer index
-> 2682             return self._getitem_array(key)
2683         elif isinstance(key, DataFrame):
2684             return self._getitem_frame(key)
E:UsersdavidwoolAnaconda3libsite-packagespandascoreframe.py in _getitem_array(self, key)
2724             return self._take(indexer, axis=0)
2725         else:
-> 2726             indexer = self.loc._convert_to_indexer(key, axis=1)
2727             return self._take(indexer, axis=1)
2728 
E:UsersdavidwoolAnaconda3libsite-packagespandascoreindexing.py in _convert_to_indexer(self, obj, axis, is_setter)
1325                 if mask.any():
1326                     raise KeyError('{mask} not in index'
-> 1327                                    .format(mask=objarr[mask]))
1328 
1329                 return com._values_from_object(indexer)
KeyError: "['bmi_catlt40' 'bmi_cat0' 'albumin_catgt3.5' 'albumin_catlt3.5'n 'ablumin_cat0'] not in index"

csv看起来很好,有所有的值,但当我试图运行模型时,它找不到我在索引中创建的那些变量。

如有任何建议,我们将不胜感激。谢谢

#columns
new_df.columns
Index(['Age', 'Sex', 'DIABETES', 'bmi', 'SMOKE', 'DPRALBUM', 'Readmission',
'Infection', 'bmi_cat', 'albumin_cat', 'Optimized', 'Mortality',
'DIABETES_INSULIN', 'DIABETES_NO', 'DIABETES_NON-INSULIN', 'bmi_cat_0',
'bmi_cat_gte40', 'bmi_cat_lt40', 'albumin_cat_0', 'albumin_cat_gt3.5',
'albumin_cat_lt3.5'],
dtype='object')

你写了什么:

['Age','Sex','SMOKE', 'DIABETES_NO', 'DIABETES_INSULIN', 'DIABETES_NON-INSULIN', 'bmi_cat_gte40',
'bmi_catlt40',  'bmi_cat0',  'albumin_catgt3.5',  'albumin_catlt3.5',  'ablumin_cat0']

要获取的列的实际名称:

['Age', 'Sex', 'SMOKE', 'DIABETES_NO', 'DIABETES_INSULIN', 'DIABETES_NON-INSULIN', 'bmi_cat_gte40',
'bmi_cat_lt40', 'bmi_cat_0', 'albumin_cat_gt3.5', 'albumin_cat_lt3.5', 'albumin_cat_0']

试着比较每个列表的第二行,你会发现其中的一些差异。