从dbf到numpy数组

时间:2019-07-10 13:18:25

标签: python sorting datetime numpy-ndarray dbf

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

我尝试使用 dbf 库,但是我没有弄清楚如何从我的 dbf 中选择特定的列来构建足够的 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 lib创建的一个:

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

我不知道如何选择我想要的列,并且编译和排序只会持续很长时间。

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

要注意的一件事是,代码段之间的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软件包的作者。