从文件导入numpy数组时,如何将两个字段合并为一个?

时间:2011-06-29 17:35:46

标签: python numpy

我有一个数据文件,我正在阅读一个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)

一切都很好,但我想将日期和时间字段组合到我的数组中的一个日期时间列而不是单独的列。我可以使用转换器函数进行单独的字段转换,但是我看不到将两个单独的日期和时间字段组合到一个日期时间的方法。可以这样做吗?

谢谢,乔恩

3 个答案:

答案 0 :(得分:2)

不是直接的,如果你在加载之前只是对csv文件进行切片可能会更容易,例如使用这样一个非常愚蠢的脚本:

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

这会将字段2和3与下划线组合在一起,您可以在其上使用时间戳字符串分析器。

答案 1 :(得分:0)

查看文档,我认为没有办法在np.genfromtxt内执行此操作。您最好的选择可能是读取当前正在执行的数据,然后创建一个新的数组,将两列合并为后续步骤。

答案 2 :(得分: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])