KeyError: '[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23\n 24 25 26 27 28 29] not in index'
时间: 2024-01-05 11:03:31 浏览: 43
这个错误通常是由于指定的列索引在 dataframe 中不存在导致的。在这段代码中,指定的列索引是0到29,表示要对 dataframe 中的前30列进行独热编码处理。如果 dataframe 中的列数不足30列,就会出现上述错误。
可能的原因包括:
1. 导入的数据集中列数不足30列,需要检查数据集是否正确导入并且包含足够的列。
2. 指定的列索引有误,需要检查列索引是否正确。
建议检查一下数据集的列数以及指定的列索引是否正确。
相关问题
解释KeyError: "None of [Index([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,\n 19, 20, 21, 22, 23, 24],\n
这个错误通常是因为你试图访问字典或者 Pandas DataFrame 中不存在的键。在这个错误信息中,出现了一个索引列表,表示你在尝试使用这个索引来访问 DataFrame 或者其他数据结构中的元素时,出现了 KeyError。
具体来说,这个错误信息的含义是:你尝试使用一个名为 [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24] 的索引来访问 DataFrame 中的元素,但是这个索引并不存在于 DataFrame 中,因此出现了 KeyError 错误。
要解决这个问题,你需要检查一下你的代码,确定你正在使用正确的键来访问 DataFrame 中的元素。如果你不确定哪个键是正确的,可以打印出 DataFrame 的内容,检查一下其中的键名是否与你尝试使用的键相匹配。
修改代码中的错误#include "oled.h" #include "oledfont.h" #include "matrix_key.h" #include "LED.H" #define PassWord_MAX_Num 8 void password_correct() { OLED_ShowCHinese(16,2,20,1); OLED_ShowCHinese(32,2,21,1); OLED_ShowCHinese(48,2,24,1); OLED_ShowCHinese(64,2,25,1); } void password_Error() { OLED_ShowCHinese(16,2,20,1); OLED_ShowCHinese(32,2,21,1); OLED_ShowCHinese(48,2,22,1); OLED_ShowCHinese(64,2,23,1); } void password_input() { OLED_ShowCHinese(0,0,17,0); OLED_ShowCHinese(16,0,18,0); OLED_ShowCHinese(32,0,19,0); OLED_ShowCHinese(48,0,20,0); OLED_ShowCHinese(64,0,21,0); } uint8_t flag=1; void oled_xs(){ if(flag==1){ password_input(); } if(flag==2){ password_correct(); } if(flag==3){ password_Error(); } } void oled_skip(uint8_t num) { OLED_Clear(); flag = num; } uint8_t PassWord[PassWord_MAX_Num+1] = "123456\0"; uint8_t PassWord_Temp[PassWord_MAX_Num +1]; uint8_t PassWord_n; uint8_t password_verifiers(){ uint8_t n =0; for(n =0;n<PassWord_MAX_Num;n++) { if(PassWord_Temp[n]!=PassWord[n]) return 0; } return 1; } void key_command(){ uint8_t key_num = 0; uint8_t text =0; key_num = matrix_key(); if(flag==1){ if(PassWord_n<PassWord_MAX_Num) { switch(key_num) { case 1 :text ='1';break; case 2 :text ='2';break; case 3 :text ='3';break; case 4 :text ='4';break; case 5 :text ='5';break; case 6 :text ='6';break; case 7 :text ='7';break; case 8 :text ='8';break; case 9 :text ='9';break; case 10 :text ='10';break; case 11 :text ='11';break; case 12 :text ='12';break; case 13 :text ='13';break; case 14 :text ='14';break; default: break; } if(text) { PassWord_Temp[PassWord_n] = text; PassWord_n++; } } if (key_num ==15) { PassWord_Temp[PassWord_n] ='\0'; PassWord_n++; if(password_verifiers()==1) { oled_skip(2); //LED2_ON(); } else { oled_skip(3); } } if(key_num ==13) { //Clear_PassWord_Temp(); } } } }
在代码中存在一些错误:
1. 在头文件中,LED.H 应该改为 LED.h,因为文件名区分大小写。
2. 在 password_input() 函数中,OLED_ShowCHinese() 函数的第一个参数应该改为 0,因为中文字符要显示在第一行。
3. 在 oled_xs() 函数中,应该在每个 if 语句中加上 flag++,以便在下一次调用 oled_xs() 函数时显示下一个界面。
4. 在 key_command() 函数中,case 10、11、12、13、14 中的数字应该改为 0、*、#、清除、确认,因为这些数字代表特殊功能键,不是实际的数字。
5. 在 key_command() 函数中,如果输入密码错误,应该清空 PassWord_Temp 数组,以便重新输入密码。
修改后的代码如下:
```c
#include "oled.h"
#include "oledfont.h"
#include "matrix_key.h"
#include "LED.h"
#define PassWord_MAX_Num 8
void password_correct()
{
OLED_ShowCHinese(16, 2, 20, 1);
OLED_ShowCHinese(32, 2, 21, 1);
OLED_ShowCHinese(48, 2, 24, 1);
OLED_ShowCHinese(64, 2, 25, 1);
}
void password_Error()
{
OLED_ShowCHinese(16, 2, 20, 1);
OLED_ShowCHinese(32, 2, 21, 1);
OLED_ShowCHinese(48, 2, 22, 1);
OLED_ShowCHinese(64, 2, 23, 1);
}
void password_input()
{
OLED_ShowCHinese(0, 0, 17, 0);
OLED_ShowCHinese(16, 0, 18, 0);
OLED_ShowCHinese(32, 0, 19, 0);
OLED_ShowCHinese(48, 0, 20, 0);
OLED_ShowCHinese(64, 0, 21, 0);
}
uint8_t flag = 1;
void oled_xs(){
if(flag==1){
password_input();
flag++;
}
else if(flag==2){
password_correct();
flag++;
}
else if(flag==3){
password_Error();
flag++;
}
}
void oled_skip(uint8_t num)
{
OLED_Clear();
flag = num;
}
uint8_t PassWord[PassWord_MAX_Num+1] = "123456\0";
uint8_t PassWord_Temp[PassWord_MAX_Num+1];
uint8_t PassWord_n;
uint8_t password_verifiers()
{
uint8_t n = 0;
for(n = 0; n < PassWord_MAX_Num; n++)
{
if(PassWord_Temp[n] != PassWord[n])
return 0;
}
return 1;
}
void key_command()
{
uint8_t key_num = 0;
uint8_t text = 0;
key_num = matrix_key();
if(flag == 1){
if(PassWord_n < PassWord_MAX_Num) {
switch(key_num) {
case 1: text = '1'; break;
case 2: text = '2'; break;
case 3: text = '3'; break;
case 4: text = '4'; break;
case 5: text = '5'; break;
case 6: text = '6'; break;
case 7: text = '7'; break;
case 8: text = '8'; break;
case 9: text = '9'; break;
case 10: text = '0'; break;
case 11: text = '*'; break;
case 12: text = '#'; break;
case 13:
PassWord_Temp[PassWord_n] = '\0';
PassWord_n++;
if(password_verifiers() == 1) {
oled_skip(2);
//LED2_ON();
}
else {
oled_skip(3);
PassWord_n = 0;
memset(PassWord_Temp, 0, sizeof(PassWord_Temp));
}
break;
case 14:
PassWord_n = 0;
memset(PassWord_Temp, 0, sizeof(PassWord_Temp));
break;
default:
break;
}
if(text) {
PassWord_Temp[PassWord_n] = text;
PassWord_n++;
}
}
}
}
```