2011-06-29 23 views
1

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

一切都很好,但我想的日期和时间窗口在我的阵列组合成一个日期时间列,而不是独立的列。我可以使用转换器功能进行单独的字段转换,但我无法看到将两个单独的日期和时间字段组合成一个日期时间的方式。这可以做到吗?

谢谢,乔恩

回答

2

不是直接的,如果你只是slice'n'dice装货前的csv文件,例如有这样一个非常愚蠢的脚本可能更容易:

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

这将字段2和3合并为一个下划线,并且可以使用时间戳stringparser。

0

看看文档,我不认为有一种方法可以在np.genfromtxt内做到这一点。您最好的选择可能是按照您当前的操作读取数据,然后创建一个新的数组,将两列合并为一个后续步骤。

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]) 
相关问题