我有一个python代码,使用pandas模块,我从.csv文件中获取数据到pandas数据帧。然后,我将列表中的值与pandas数据帧的值进行比较。由于我在列表中定义了一些在数据帧中不存在的索引,因此我得到错误:
<svg id="background" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="group"></g>
</svg>
KeyError:u&#39;标签[422]不在[index]
中我需要你的帮助才能知道如何在继续避免错误之前检查所使用的索引是否存在。在我的情况下,索引数据框或检查长度并不是有用的解决方案。
我尝试过这样的事情,但他们不能工作:
for i in sorted(thresholds.keys()):
current=acme_current_data.loc[i, 'Recent-Server']
或者:
for i in sorted(thresholds.keys()):
if acme_current_data.loc[i, 'Recent-Server']:
current=acme_current_data.loc[i, 'Recent-Server']
提前致谢。
这里我给你一个完整的例子(简化)来查看错误。首先,yoy必须制作一个source.csv文件,并对此内容进行处理。
for i in sorted(thresholds.keys()):
try:
current=acme_current_data.loc[i, 'Recent-Server']
except INDEX_ERROR:
print "Error"
然后,使用此文本下的代码的test.py。如果我在使用INVITE,Requests,60,77340232,13674,59,74062475,13504
Retransmissions,0,5387,34,0,114838,2474
100,Trying,57,77039746,13590,59,73752071,13420
180,Ringing,47,37411523,7067,41,36984407,6982
486,Busy Here,2,3689189,819,2,3689238,819
487,Terminated,13,21531195,3687,13,21531766,3687
488,Not Acceptable,0,39326,24,0,30665,22
491,Req Pending,0,121,4,0,118,4
4xx,Client Error,0,1,1,0,1,1
进行分配之前检查current_data.loc[i, 'Recent-Server']
是否存在,我的问题将会得到解决。有什么建议吗?
current=current_data.loc[i, 'Recent-Server']
答案 0 :(得分:2)
感谢您提供完整的代码示例,这非常有用。在我的评论中提出的两个建议都是:
如果您使用except IndexError
替换代码中的except KeyError
,您的代码将打印“索引错误”五次。有问题的片段:
for i in sorted(thresholds.keys()):
try:
current = current_data.loc[i, 'Recent-Server']
if current != '0':
valor = thresholds[i]
except KeyError: # <------------------------ use the right exception
print("Index Error")
或者,您可以在访问之前检查数据框的索引,如下所示:
for i in sorted(thresholds.keys()):
if i in current_data.index:
current = current_data.loc[i, 'Recent-Server']
if current != '0':
valor = thresholds[i]
请注意,我检查了数据框的索引i in current_data.index
。您尝试的内容(i in current_data.loc.index
)是语法错误,因为它不是loc
具有索引而是数据框current_data
本身。
这两种技术都有效。我更喜欢#2。