Как объединить два поля в одно при импорте из файла в массив numpy? - PullRequest
1 голос
/ 29 июня 2011

У меня есть файл данных, который я читаю в массив 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 ]

2 голосов
/ 29 июня 2011

Не напрямую, может быть проще, если вы просто нарежете и загрузите файл csv перед загрузкой, например, с очень глупым скриптом, подобным этому:

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

Это объединит поля 2 и 3 с подчеркиванием, и вы можете использовать строковый анализатор метки времени на нем.

0 голосов
/ 06 июля 2011

Если вы не беспокоитесь о скорости, это довольно прямой путь, хотя и пристальный:

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 голосов
/ 29 июня 2011

Глядя на документацию, я не думаю, что есть способ сделать это из np.genfromtxt. Лучше всего, вероятно, прочитать данные, как вы это делаете в настоящее время, а затем создать новый массив, который объединит эти два столбца на более позднем этапе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...