我想读取ArcGIS shapefile的dbf
文件并将其转储到pandas
数据框中。我当前使用的是dbf包。
我显然已经能够将dbf
文件作为表加载,但还不知道如何解析它并将其转换为panda Dataframe 。该如何操作?
这就是我的困惑所在:
import dbf
thisTable = dbf.Table('C:\\Users\\myfolder\\project\\myfile.dbf')
thisTable.open(mode='read-only')
Python将这条语句作为输出返回,坦率地说,我不知道这是怎么回事:dbf.ver_2.Table('C:\\Users\\myfolder\\project\\myfile.dbf', status='read-only')
编辑
我的原始dbf
示例:
FID Shape E N
0 Point 90089.518711 -201738.245555
1 Point 93961.324059 -200676.766517
2 Point 97836.321204 -199614.270439
... ... ... ...
8条答案
按热度按时间yrwegjxp1#
您应该看看simpledbf:
我可以使用一个简单的.dbf文件。
0h4hbjxa2#
正如mmann1123所说,您可以使用geopandas来读取您的dbf文件。geopandas读取它,即使它可能有也可能没有地理空间数据。
假设你的数据只是表格数据(没有地理坐标),并且你希望读取它并转换成Pandas图书馆可以读取的格式,我建议使用geopandas。
下面是一个例子:
vjrehmav3#
您可能需要查看geopandas。它允许您执行最重要的GIS操作
http://geopandas.org/data_structures.html
7bsow1i64#
性能可能是一个问题。我测试了上面和其他地方建议的一些库。在我的测试中,我使用了一个17列和23条记录(7 KB)的小dbf文件。
simpledbf包有一个简单的方法to_dataframe dbfread的DBF表对象的实用性在于,可以通过将其作为参数添加到Python的内置函数iter中来对其进行迭代(),其结果可用于直接初始化 Dataframe 。在pysal的情况下,我使用了函数dbf2DF,如here所述。我使用上面所示的方法将其他库中的数据添加到数据框中。但是,只有在检索字段名称之后,我才能首先使用正确的列名初始化数据框:分别从fieldNames、_ meta.keys和通过函数ListFields获取。
也许逐个添加记录并不是获得填充 Dataframe 的最快方法,这意味着当选择更聪明的方法将数据添加到 Dataframe 时,使用dbfpy、dbf和arcpy进行测试会得到更有利的数据。尽管如此,我希望下表(时间以秒为单位)有用:
oo7oh9g95#
使用dbfpy怎么样?下面的例子展示了如何将一个包含3列的dbf加载到 Dataframe 中:
如果需要,可以从db.fieldNames中找到列名。
jq6vz3qz6#
我使用了PyPi版本0.99.1上的“dbf”,效果很好。
rdrgkggo7#
这对我很有效:
bttbmeg08#
如何将DBF文件的内容加载到Pandas数据框中。
iter()
是必需的,因为Pandas没有检测到DBF对象是可迭代的。