【问题标题】:Subplots except Value Error: Invalid syntax除值错误外的子图:无效语法
【发布时间】:2020-11-13 10:12:55
【问题描述】:

我知道这个问题有一些答案,但不幸的是,我无法让它们中的任何一个起作用。 我有一个循环将某些时间间隔绘制为子图,但是由于数据清理而导致的一些时间间隔被删除。现在我想跳过那个时间间隔并正常继续。

我尝试这样做:

    except ValueError:
        continue

但是我得到了无效的语法错误。

原码:

dimenzion = math.ceil(np.sqrt(len(lista_start)))

fig, axes = plt.subplots(nrows=dimenzion,ncols=dimenzion, figsize=(25, 21), sharex=False)
sns.despine(left= True)
fig.suptitle('Clean data', y =1.01, fontsize = 21)


date = 0
i = 0
j = 0
while date <= len(lista_end)-1:
   df_date = df_clean[(df_clean['Time'] > pd.Timestamp(lista_start.loc[date][0])) & 
                      (df_clean['Time'] < pd.Timestamp(lista_end.loc[date][0]))]
   
   df_date = df_date.reset_index(drop = True)
 
   start = datetime.datetime.strftime(lista_start.loc[date][0], '%d.%m.%y')
   end = datetime.datetime.strftime(lista_end.loc[date][0], '%d.%m.%y')
   
   df_date.plot('Time', 'Mids Ply Fines B', figsize = (25,7), ax = axes[i,j], subplots = True)
   axes[i,j].set_title('{} - {}'.format(start, end))
   axes[i,j].get_xaxis().set_visible(False)
   
    
   j = j+1
   date = date + 1
   
   if j > dimenzion - 1:
       j = 0
       i = i+1  
           
   except ValueError:
       continue
   
   plt.setp(axes, yticks=[])
   plt.tight_layout() 

【问题讨论】:

  • except 仅在 try 之后才有意义。
  • 测试 df_date 是否具有探测器值可能比依赖绘图失败更好

标签: python while-loop syntax-error subplot except


【解决方案1】:

在 Python 中,except 需要开始尝试 - 您需要告诉它哪个代码“部分”可能会生成您想要捕获的错误:

我不知道是哪一行生成了 ValueError - 但这应该足够了:

   try : 
      df_date = df_clean[(df_clean['Time'] > pd.Timestamp(lista_start.loc[date][0])) & 
                  (df_clean['Time'] < pd.Timestamp(lista_end.loc[date][0]))]

     df_date = df_date.reset_index(drop = True)

     start = datetime.datetime.strftime(lista_start.loc[date][0], '%d.%m.%y')
     end = datetime.datetime.strftime(lista_end.loc[date][0], '%d.%m.%y')

     df_date.plot('Time', 'Mids Ply Fines B', figsize = (25,7), ax = axes[i,j], subplots = True)
     axes[i,j].set_title('{} - {}'.format(start, end))
     axes[i,j].get_xaxis().set_visible(False)

     j = j+1
     date = date + 1

     if j > dimenzion - 1:
         j = 0
     i = i+1  
       
   except ValueError:
      continue

注意 try 和 except 之间的整个代码“部分”是缩进的 - 这清楚地表明,在该部分的任何位置生成的任何 ValueError 异常都将导致继续创建。

【讨论】:

  • 您好,谢谢。它不再向我显示错误,但现在它没有绘图,它只是卡在执行中。你有什么想法吗?
  • @bassline_ballerina - 你还记得哪一行给出了原始错误吗?
  • ` 文件“”,第 32 行,除了 ValueError:^ SyntaxError: invalid syntax `
  • 是的 - 那是 eaw 'except' 错误(没有尝试)......我的意思是没有尝试,除了产生 ValueError 的东西......这可能有助于确定你为什么会得到一个空白情节..
  • 啊哈,对不起。我正在分析生产。我们正在生产产品 A、B、C、D。我们在不同的时间生产每种产品。如果我的数据集包含所有产品,那么它在时间上是连续的。当我选择产品 A 时,我有时间夹盘(带有开始和结束日期的表格)。当我清理数据时,其中一些时间块被删除。当代码查看开始时间和结束时间时,它没有任何数据要绘制。我希望它跳过这些时间段。
猜你喜欢
  • 2019-12-09
  • 1970-01-01
  • 2021-08-21
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多