读取文件并在numpy数组中合并两列
我有一段文本数据,内容像这样:
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")})
这样就出现了一个很基本的问题,就是第二列的默认日期被设置成了1900年1月1日。有没有什么办法在读取文件的时候,或者读取完文件后,把前两列的日期和时间合并起来呢?
1 个回答
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
会包含初始化后的日期时间对象。(我加了 if len(line) > 1
这个过滤条件,主要是为了处理文件中可能出现的空行。如果你的文件里没有空行,可以不加这个条件。)