我想读取ArcGIS shapefile的dbf文件并将其转储到pandas数据帧中。我目前正在使用dbf包。
我显然能够将dbf文件作为表加载,但还没有……
你可能想看看geopandas。它将允许您执行最重要的GIS操作
http://geopandas.org/data_structures.html
你应该看看 simpledbf :
In [2]: import pandas as pd In [3]: from simpledbf import Dbf5 In [4]: dbf = Dbf5('test.dbf') In [5]: df = dbf.to_dataframe()
这适用于我的一些示例.dbf文件。希望有所帮助。
性能可能是一个问题。我测试了上面和其他地方建议的一些库。对于我的测试,我使用了一个17列和23个记录(7 kb)的小dbf文件。
包simpledbf有一个简单的方法to_dataframe()。 dbfread的DBF表对象的实际方面是可以通过将它作为参数添加到Python的内置函数iter()来迭代它,其结果可用于直接初始化数据帧。在pysal的情况下,我使用了函数dbf2DF 这里 。我使用上面显示的方法将其他库中的数据添加到数据框中。但是,只有在检索字段名称之后才能首先使用正确的列名称初始化数据帧:分别来自fieldNames,_meta.keys和函数ListFields。
可能逐个添加记录并不是获取填充数据帧的最快方法,这意味着当选择更智能的方法将数据添加到数据帧时,使用dbfpy,dbf和arcpy进行测试会产生更有利的数字。同样,我希望下表 - 以秒为单位 - 是有用的:
simpledbf 0.0030 dbfread 0.0060 dbfpy 0.0140 pysal 0.0160 dbf 0.0210 arcpy 2.7770