首页 > 解决方案 > 范围内缺少值,因为没有人选择选项 5,因此它在索引 5 处破坏了我的 for 循环

问题描述

如何让 python 解释间隙并用 5 索引和 0 值填充它?

我正在创建一个函数来自动计算方差分析测试的调查响应,同时制作条形图。

我遇到的问题是,所有 65 岁以上的受访者都没有标记选项 5,因此它是空白的。这打破了我正在使用的 for 循环,因为它通过 range(7)。

我如何事先编写代码或在没有人选择 5 的行中编写代码,然后它可以自动包含它并分配 0 值。

a1y=[]
b2y=[]
c3y=[]
d4y=[]
e5y=[]
for item in range(7):
    
    ar = grp1['Q22'].value_counts()
    br = grp2['Q22'].value_counts()
    cr = grp3['Q22'].value_counts()
    dr = grp4['Q22'].value_counts()
    er = grp5['Q22'].value_counts()
 
    a1y.append(ar[item+1])
    b2y.append(br[item+1])
    c3y.append(cr[item+1])
    d4y.append(dr[item+1])
    e5y.append(er[item+1])

grp5['Q22'].value_counts()

 7.0    16
 4.0    14
 6.0    11
 2.0     8
 3.0     2
-1.0     2
 1.0     1
Name: Q22, dtype: int64

标签: pythonpandas

解决方案


您可以在任何选项上包含一个简单的 try 和 except 语句,因此如果出现错误,您可以处理它。为此,只需在您要处理的代码上方添加一个 try 语句和一个 except 语句,其中包含错误时应该发生的情况。

像这样:

try:                                                                                                 
  # CODE THAT MIGHT ERROR                                                                            
  er = grp5['Q22'].value_counts()                                                                     
except:                                                                                              
  # CODE THAT SHOULD BE EXECUTED IF THE ABOVE CODE ERRORS                                            
  er = 0 

您可以使其更加具体,以便仅在发生特定错误时才执行 except 语句之后的代码。这是首选,因为如果您的程序由于另一个/意外原因在该行崩溃,您可以知道它的中断。

通过在 except 语句后添加错误名称来执行此操作:

except ERRORNAME:

推荐阅读