【问题标题】:How to fix 'Key Error: Index' error in jupyter notebook如何修复 jupyter notebook 中的“关键错误:索引”错误
【发布时间】:2019-01-18 10:11:36
【问题描述】:

我正在构建一个神经网络模型。我正在使用 Jupyter Notebook,并且我已经导入了必要的库。有两个数据集,它被合并为一个。在我运行 此代码 时合并后,会显示 KeyError: Index([ ]) 错误消息。你能帮我解决这个问题吗?

代码:

merge_vector = ["school","sex","age","address",
                "famsize","Pstatus","Medu","Fedu",
                "Mjob","Fjob","reason","nursery","internet"]

duplicated_mask = merged_df.duplicated(keep=False, subset=merge_vector)

错误信息:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-40-4f1a3ab8858b> in <module>()
----> 1 duplicated_mask = merged_df.duplicated(keep=False, subset=merge_vector)

E:\Anaconda2\envs\tensorflow\lib\site-packages\pandas\core\frame.py in duplicated(self, subset, keep)
   4379         diff = Index(subset).difference(self.columns)
   4380         if not diff.empty:
-> 4381             raise KeyError(diff)
   4382 
   4383         vals = (col.values for name, col in self.iteritems()

KeyError: Index(['Fedu', 'Fjob', 'Medu', 'Mjob', 'Pstatus', 'address', 'age', 'famsize',
       'internet', 'nursery', 'reason', 'school', 'sex'],
      dtype='object')

为 NN 模型导入的库

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from math import floor, ceil
from pylab import rcParams

%matplotlib inline

【问题讨论】:

    标签: python pandas dataframe jupyter-notebook


    【解决方案1】:

    您需要 intersection 列名称和 merge_vector,因为在 DataFrame 中某些列不存在:

    merge_vector = ["school","sex","age","address",
                    "famsize","Pstatus","Medu","Fedu",
                    "Mjob","Fjob","reason","nursery","internet"]
    
    merged_df = pd.DataFrame({'internet':[4,5,5],
                              'school':[7,8,8],
                              'new':[1,2,3]})
    print (merged_df)
       internet  school  new
    0         4       7    1
    1         5       8    2
    2         5       8    3
    
    existed_cols = merged_df.columns.intersection(merge_vector)
    print (existed_cols)
    Index(['internet', 'school'], dtype='object')
    
    duplicated_mask = merged_df.duplicated(keep=False, subset=existed_cols)
    print (duplicated_mask)
    0    False
    1     True
    2     True
    dtype: bool
    

    【讨论】:

    • 谢谢耶兹瑞尔。第一行有效,但在执行duplicated_mask = merged_df.duplicated(keep=False, subset=existed_cols) 行后,会显示一条值错误消息告诉ValueError: not enough values to unpack (expected 2, got 0)
    • @Kaawya - 这意味着existed_cols 中没有像merged_df = pd.DataFrame({'internetw':[4,5,5], 'ss':[7,8,8], 'dd':[1,2,3]}) 这样的列,因此请通过print (merged_df.columns.tolist()) 测试您的真实列名
    • 成功了!!我首先不明白你的意思,因为我没有完全检查你的回复。我是新手,所以花了一些时间才弄清楚。非常感谢!!!! - @jezrael
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2017-11-05
    • 2019-09-01
    • 2021-07-24
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多