如何在将文件导入numpy数组时合并两个字段?

1 投票
3 回答
974 浏览
提问于 2025-04-16 20:32

我有一个数据文件,我正在把它读入一个numpy数组,内容大概是这样的。

#RIC,Date[G],Time[G],GMT Offset,Type,Open,High,Low,Last,Volume
ADH0,20100103,22:18:00.000,-6,Intraday 1Min,0.8915,0.8915,0.8915,0.8915,0
ADH0,20100103,22:22:00.000,-6,Intraday 1Min,0.89,0.89,0.89,0.89,0

我使用 np.genfromtxt() 函数来读取这个文件,方法如下:

a = np.genfromtxt(f, names=True, delimiter=',', dtype="|S8,i4,|S12,f8", usecols=(0, 1, 2, 8), autostrip=True)

一切都很好,但我想把日期和时间这两个字段合并成一个日期时间的列,而不是分开成两列。我可以用转换函数来处理每个字段,但我找不到把这两个分开的日期和时间字段合并成一个日期时间的方法。这能做到吗?

谢谢,Jon

3 个回答

0

如果你不太在意速度的话,这是一种相对直接的方法,虽然看起来有点复杂:

raw_csv = csv.reader(open('file'))
joined_columns = np.array([[[i[0]]+[str(i[1])+'sep_string'+str(i[2])]+i[3:]]\
                 for i in raw_csv])
0

根据文档来看,我觉得在np.genfromtxt里面没有办法做到这一点。你最好的办法可能还是像现在这样读取数据,然后再创建一个新的数组,把这两列数据合并到一起。

2

不能直接这样做,不过在加载之前先处理一下csv文件可能会更简单,比如用一个非常简单的脚本来实现:

gawk -F, '{print $1","$2"_"$3","$4","$5","$6","$7","$8","$9","$10}' input.csv

这个脚本会把第2和第3个字段用下划线连接起来,然后你可以对它进行时间戳的字符串解析。

撰写回答