【问题标题】:Merging geopandas dataframe and converting to json throws "Maximum recursion level reached" error合并 geopandas 数据框并转换为 json 会引发“达到最大递归级别”错误
【发布时间】:2020-09-08 16:37:15
【问题描述】:

Dataframe df 具有以下列:

['country_code', 'confirmed_cases', 'count_date']

gdf(geopandas 数据框)具有以下列:

['country_code', 'geometry']

以下所有工作:

df.to_json()
gdf.to_json()
gdf.geometry.to_json()

但是当我合并两者时,我无法转换为 json。

merged_df = df.merge(gdf, how='left')

merged_df.country_code.to_json() #works
merged_df.count_date.to_json() #works
merged_df.confirmed_cases.to_json() #works

merged_df.to_json() #THROWS MAX RECURSION ERROR
merged_df.geometry.to_json() #THROWS MAX RECURSION ERROR
merged_df.iloc[:1].to_json() #THROWS MAX RECURSION ERROR

为什么相同的“几何”列在两个数据框中表现不同?

【问题讨论】:

    标签: pandas geopandas


    【解决方案1】:

    以另一种方式合并文件。由于gdf 是GeoDataFrame,to_json 必须处理几何列。熊猫自己不能做到这一点。如果你像以前那样将gdf 合并到df,你的结果就是pandas.DataFrame。如果你以另一种方式合并,你的结果将是 geopandas.GeoDataFrame,它可以处理将几何导出到 json。

    merged_df = gdf.merge(df, how='right')
    

    【讨论】:

    • 谢谢。它适用于 10K 行,但是当我尝试完整数据集(~43K 行)时,操作被杀死。有什么办法可以解决这个问题?我正在使用 Ubuntu。
    • 有没有可能是内存不足?不过 43K 并没有那么大。
    • 我的机器有 4GB RAM。可能是更高的 RAM 会解决它?
    • 是的,4GB RAM 可能是罪魁祸首,尤其是当它的一部分被系统和其他应用程序使用时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多