阅读文件&在numpy数组中连接两列

时间:2013-02-03 20:44:32

标签: python datetime numpy genfromtxt

我有一个文本数据,如:
16/12/2006;17:24:00;1.000;17.000
第一列是日期,第二列是时间,休息只是一些花车。现在我正在读取文件:

np.genfromtxt(path,
              dtype=(np.datetime64, np.datetime64, np.float16, np.float16),
              delimiter=';',
              converters = {0: lambda x: datetime.datetime.strptime(x, "%d/%m/%Y"),
                            1: lambda x: datetime.datetime.strptime(x, "%H:%M:%S")})

这导致非常基本的问题,其中第二列的默认日期设置为1月1,100。有没有办法在读取文件时或读取文件后组合前两列的日期和时间。

1 个答案:

答案 0 :(得分:2)

您可以使用普通的Python命令读取它并自己创建连接的字段。然后,如果需要,您可以在其上运行转换器:

from datetime import datetime

fp = open("test.dat", "r")
lines = [ line.split(";") for line in fp.readlines() ]
fp.close()
fulldates = [ " ".join(line[0:2]) for line in lines if len(line) > 1 ]
converted = [ datetime.strptime(date, "%d/%m/%Y %H:%M:%S")
              for date in fulldates ]

列表fulldates将包含已加入数据+时间字段的列表。列表converted将包含初始化的datetime对象。 (我添加if len(line) > 1过滤器只是为了处理文件中的最终空行。如果你的文件不包含任何空行,你可以省略它。)