python - KeyError: 'not found in index' -created dummy variables not found in index
问题描述
我正在研究逻辑回归问题。我根据另一列中的信息创建了 2 个新变量(如果值高于或低于阈值,则给出值 'gt40')。然后我必须为“糖尿病”、“bmi_cat”和“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:\Users\davidwool\Anaconda3\lib\site-packages\pandas\core\frame.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:\Users\davidwool\Anaconda3\lib\site-packages\pandas\core\frame.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:\Users\davidwool\Anaconda3\lib\site-packages\pandas\core\indexing.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']
尝试比较每个列表的第二行,您会发现一些差异。
推荐阅读
- sql - SQL获取销售额超过一定数量的商品数量
- python - 对 memcache 将 AppEngine py2.7 应用程序迁移到 py3 感到困惑
- facebook - 从 fb.watch 别名获取 Facebook 视频 ID
- java - Java.lang.RuntimeException:在注册表中找不到应用程序“org.eclipse.test.coretestapplication”
- node.js - 使用 exceljs 并在解析大型 excel 文件时遇到内存泄漏
- javascript - ServiceNow 中的 JavaScript
- python-3.x - 来自 psycopg2 的 ExecuteMany 函数出错
- python - 如何根据具有重复值的列对熊猫中的值进行排序
- python - Selenium Python 单击没有 ID 的按钮
- python - Python 3、concurrent.futures.ProcessPoolExecutor 和 CEF 在达到池大小后崩溃