是否加入(concat)Geopandas中类似数据框的列表?


15

我有一个数据框列表,所有的结构都相同,并且都是多边形。

如何使用geopandas将它们全部添加在一起?

Answers:


28

看来这是现在正确的方法:

rdf = gpd.GeoDataFrame( pd.concat( dataframesList, ignore_index=True) )

8
伟大的答案,一个改进: rdf = gpd.GeoDataFrame(pd.concat(dataframesList, ignore_index=True), crs=dataframesList[0].crs)。现在,新数据框还将具有与初始数据框之一相同的CRS。由于使用了pandas.concat任何地理元数据,例如CRS,默认情况下不会保留。
AleksMat

效果很好-谢谢。我确实发现追加可能会误入歧途,例如,当一个文件具有“名称”而另一个文件具有“名称”时,对于一个文件中的行,我在任一列中都没有任何结果。我无法可靠地重现它,因此我最终迫使列名使用小写字母以简化列混搭,这似乎是可靠的。
Mike Honey,

14

我刚刚对此进行了试验-也许在GeoPandas 0.2.1和Pandas 0.20.3中它更加简洁:

gdf = pd.concat([gdf1, gdf2])

gdf会自动创建为GeoDataFrame。当然,如果有可能导致索引冲突,则需要保留'ignore_index = True'参数。


3
我只是试过了,我可以确认它不起作用(使用pandas_0.20.3 geopandas_0.3.0)。结果是一个DataFrame,而不是GeoDataFrame。例如,如果您尝试使用,gdf1.to_file(xxx, driver='ESRI Shapefile')您会得到一条错误消息,它是'DataFrame' object has no attribute 'to_file'
jberrio '18

@jberrio感谢您的更新!看起来,对GeoPandas的更新使事情变得更加明确。
查理·帕

1
对于请求主持人的举报者删除“接受”复选标记,请注意这是不可能的。作为meta.stackexchange.com/a/187263/215590中的一种解决方法,我尝试删除答案,但应答者要求将其删除。meta.stackexchange.com/questions/268666/…
PolyGeo

这对我来说很好用,熊猫版本:0.24.2和地理熊猫版本:0.5.0
denson,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.