读取文件并在numpy数组中合并两列

1 投票
1 回答
1173 浏览
提问于 2025-04-17 14:38

我有一段文本数据,内容像这样:
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 这个过滤条件,主要是为了处理文件中可能出现的空行。如果你的文件里没有空行,可以不加这个条件。)

撰写回答