从 Dbf 到 numpy 数组

From Dbf to numpy array

如何在不使用 arcpy 的情况下将 dbf 转换为 numpy 数组?

我尝试使用 dbf 库,但我不知道如何 select 我的 dbf[=34= 中的特定列] 构建足够的 numpy 数组.

这是我想在不使用 arcpy 的情况下重现的脚本:

arr = arcpy.da.TableToNumPyArray(inTable ,("PROVINCE","ZONE_CODE","MEAN", "Datetime","Time"))
arr = sorted(arr,key=lambda x:datetime.strptime(str(x[3]),"%d/%m/%Y %H:%M:%S"))

使用这个命令行,我可以选择我想要的列,然后按时间顺序对它们进行排序(这是我程序的目的)。

这是我用 dbf 库制作的:

arr = dbf.Table(inTable)
arr.open()
arr = sorted(arr,key=lambda x:datetime.strptime(str(x[7]),"%d/%m/%Y %H:%M:%S"))

我不知道如何select我想要的列,编译和排序只需要很长时间。

感谢您的帮助。

需要注意的一件事是 arr 在您的代码片段之间并不相同——第一个是 numpy array,第二个是 dbf Table.

得到你想要的:

import dbf
import numpy

table = dbf.Table('some_table.dbf')
table.open()

arr = numpy.array([
    (r.province, r.zone_code, r.mean, r.datetime, r.time)
    for r in table
    ])
arr = sorted(arr,key=lambda x:datetime.strptime(str(x[3]).strip(),"%d/%m/%Y %H:%M:%S"))

我不确定性能会有什么不同。


披露:我是 dbf 包的作者。