【问题标题】:KeyError: u'no item named <name>'KeyError: u'no item named <name>'
【发布时间】:2013-10-18 08:09:25
【问题描述】:

我有这个功能可以将数据放入另一个数据框中。

def set_var(self,navn,periode,value):
    try:
        if navn.upper() not in self.data:
            self.data[navn.upper()]=NaN
        self.data[navn.upper()].ix[periode]=value
    except:
        print('> fejl ved genmning af:',navn,'i',periode)
        print( self.data[navn.upper()])
    return

然后我像这样迭代,这个填充数据:

for idx, val in enumerate(bd):
    if val not in ('Navn','Type','Aarstal','Referenceperiode','Registreringsnummer','nummer','navn','navn1','period', 'regnr'):
        for row in bd.itertuples():
            banker.set_var((str(row[6])+'_'+str(val)),row[60], row[idx+1])

我收到错误:KeyError: u'no item named &lt;name of first item I try to insert&gt;'

这是为什么?

【问题讨论】:

  • 除掉毯子; self.data[navn.upper()] 是你的错误,但 real 错误被掩盖了。

标签: python pandas dataframe


【解决方案1】:

密钥错误通常是因为 dict 对象没有您请求的密钥。在我看来 self.data 是一个字典。如果是这样,您可以像这样使用 has_key() 来测试您的对象,

if self.data.has_key(navn.upper()):
        self.data[navn.upper()]=NaN

【讨论】:

  • 感谢您的回答。 Self.data 是一个数据框。不幸的是,您编写的代码没有改变任何东西。
  • 如果我手动运行它,它可以工作,但不知何故,使用该函数的检查出错了。这运行 wituout 任何问题:if 'XXX' not in mindatabank.data: mindatabank.data['XXX']=NaN mindatabank.data ['XXX'].ix['2010Q2']=100 mindatabank.get_var('XXX',0,'2010Q2')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 1970-01-01
  • 2021-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多