有没有一种方法可以修复python3中的最大递归级别?

2024-10-04 11:35:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图建立一个跨越十年的数据状态图,用一个滑块来选择地图上显示的年份。用户可以选择2014年,地图将显示2014年的数据。在

我将要显示的数据与适当的shapefile合并。最后,我得到了733行和5列——每个县最多有9行具有相同的县名和坐标。在

在我试着绘制地图之前,一切似乎都很好。返回此错误消息:

OverflowError: Maximum recursion level reached

我尝试过使用sys.setrecursionlimit重置递归限制,但无法越过该错误。在

我一直没能找到一个答案让我明白,所以我希望有人能给我指出正确的方向。在

我使用bokeh和json来构建映射。我尝试过使用sys.setrecursionlimit,但是无论我走多高,都会收到相同的错误消息。在

上周我使用了相同的代码,但由于我使用的是数据的一个子集,所以无法显示不同年份的数据。既然我已经修复了这个问题,我就被这个错误消息卡住了。在

def json_data(selectedYear):
    yr = selectedYear
    murders = murder[murder['Year'] == yr]
    merged = mergedfinal
    merged.fillna('0', inplace = True)
    merged_json = json.loads(merged.to_json())
    json_data = json.dumps(merged_json)
    return json_data

geosource = GeoJSONDataSource(geojson = json_data(2018))

palette=brewer['YlOrRd'][9]
palette = palette[::-1]

color_mapper = LinearColorMapper(palette = palette, low = 0, high = 60, nan_color = '#d9d9d9')

hover = HoverTool(tooltips = [ ('County/City','@NAME'),('Victims', '@Victims')])

color_bar = ColorBar(color_mapper=color_mapper, label_standoff=8,width = 500, height = 30,
                     border_line_color=None,location = (0,0), 
                     orientation = 'horizontal')

p = figure(title = 'Firearm Murders in Virginia', plot_height = 600 , plot_width = 950, toolbar_location = None, tools = [hover])
p.xgrid.grid_line_color = None
p.ygrid.grid_line_color = None
p.xaxis.visible=False
p.yaxis.visible=False

p.patches('xs','ys', source = geosource,fill_color = {'field' :'Victims', 'transform' : color_mapper},
          line_color = 'black', line_width = 0.25, fill_alpha = 1)


p.add_layout(color_bar, 'below')

def update_plot(attr, old, new):
    year = Slider.value
    new_data = json_data(year)
    geosource.geojson = new_data
    p.title.text = 'Firearm Murders in VA'


slider = Slider(title = 'Year', start = 2009, end = 2018, step = 1, value = 2018)
slider.on_change('value', update_plot)

layout = column(p,widgetbox(slider))
curdoc().add_root(layout)

output_notebook()

show(layout)

当我使用一个更有限的数据集时,同样的代码也能很好地工作。以下是错误消息的完整上下文:

^{pr2}$

Tags: 数据nonejson消息dataplot错误line
2条回答

我也有类似的问题!在

我把问题缩小到.to_json步骤。出于某些原因,当我合并右边的geopandas文件时:

Neighbourhoods_merged = df_2016.merge(gdf_neighbourhoods, how = "left", on = "Neighbourhood#")

我遇到了递归错误。我通过两者的转换找到了成功:

^{pr2}$

这对我很有效。令人恼火的是,我不知道为什么会这样做,但我希望这可以帮助其他人解决同样的错误!在

如果需要更高的递归深度,可以使用sys:

import sys
sys.setrecursionlimit(1500)

这就是说,你的错误很可能是无限递归的结果,如果增加深度不能修复它,这种情况可能就是这样。在

相关问题 更多 >