【问题标题】:'Line2D' object has no property 'column'“Line2D”对象没有属性“列”
【发布时间】:2021-01-06 11:20:12
【问题描述】:

我想根据不同国家的比萨分数创建一个简单的世界等值线地图。因此我的 DataFrame 看起来像:

merged = merged[['geometry','Avg_score']]
merged.head()

My DataFrame

绘制等值线图:

fig, ax = plt.subplots(1,figsize=(15, 10))


ax.axis('off')
ax.set_title('Education Ranking', fontdict={'fontsize': '35', 'fontweight' : '3'})
merged.plot(column='Avg_score', cmap='Blues_r', scheme='User_Defined',
                    classification_kwds=dict(bins=[325,416,463,499,591]),
                     edgecolor = 'black', linewidth=0.7, ax=ax,legend= True)
leg = ax.get_legend()
leg.set_bbox_to_anchor((1, 0.7, 0.2, 0.2))
 plt.show()

但是,我收到以下错误: “Line2D”对象没有属性“列”。 可以在此处找到类似的帖子:'Line2D' object has no property 'kind'。无论如何,这里没有完全解决这个问题!任何帮助将不胜感激,因为我被困在这里太久了。

【问题讨论】:

    标签: pandas dataframe matplotlib geopandas choropleth


    【解决方案1】:

    我遇到了同样的问题。

    简答

    尝试将合并的数据框转换为地理数据框

    from geopandas import GeoDataFrame
    
    merged = GeoDataFrame(merged)
    

    长答案

    由于错误说有一个我的合并对象没有的属性,我尝试检查合并对象的类型。我发现在将数据框与地理数据框合并后,生成的对象是数据框(不是地理数据框)。

    尝试使用检查来查看合并数据对象的类型

    type(merged)
    

    如果它是数据框对象而不是地理数据框对象,geopandas 将不知道如何制作您的地图。这个数据框可以很容易地转换为地理数据框,然后使用

    首先,确保导入 GeoDataFrame 以将数据帧转换为地理数据帧,

    from geopandas import GeoDataFrame
    

    然后将数据框转换为地理数据框,

    merged = GeoDataFrame(merged)
    

    【讨论】:

    • 感谢您的回答。下次遇到这个我会试试的。
    【解决方案2】:

    问题已解决,而不是使用

    merged = df.merge(map_df,how = 'left', on = 'Country')
    

    为了获得合并的 DataFrame,我使用了

    merged = map_df.set_index('COUNTRY').join(df.set_index('Country')).
    

    仍然不确定为什么这对另一个有效。但是,在此更改后没有遇到任何问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多