Импорт данных с использованием Numpy genfromtext и форматирование столбца с датой и временем - PullRequest
1 голос
/ 20 апреля 2020

У меня есть длинный текстовый файл, который я импортирую с помощью numpy genfromtext:

00:00:01 W 348 18.2 55.9 049 1008.8 0.000 
00:00:02 W 012 12.5 55.9 049 1008.8 0.000 
00:00:03 W 012 12.5 55.9 049 1008.8 0.000
00:00:04 W 357 18.2 55.9 049 1008.8 0.000 
00:00:05 W 357 18.2 55.9 049 1008.8 0.000 
00:00:06 W 339 17.6 55.9 049 1008.8 0.000 

testdata = np.genfromtxt(itertools.islice(f_in, 0, None, 60),\
                         names=('time','ew','d12','s12','t12','p12'.....)

time = (testdata['time'])

Это организует все данные в массив. Первый столбец данных в файле - это временная метка для каждой строки. В текстовом файле он отформатирован как 00:00:00, так и в формате (%H:%m:%s). Однако в действующем массиве он превращается в 1900-01-01 00:00:00. При построении моих данных со временем я не могу заставить их сбросить Ymd.

Я пробовал time = time.strftime('%H:%M:%S') и dt.datetime.strptime(time.decode('ascii'), '%H:%M:%S')

Оба ничего не делают. Как я могу повернуть весь массив раз, чтобы сохранить исходный формат% H:% m:% s без добавления его в% Y-% m-% d?

1 Ответ

1 голос
/ 20 апреля 2020

РЕДАКТИРОВАТЬ: на основе предоставленных данных, вы можете импортировать ваш файл следующим образом:

str2date = lambda x: datetime.strptime(x.decode("utf-8"), '%H:%M:%S').time()

data = np.genfromtxt(itertools.islice(f_in, 0, None, 60), dtype=None,names=('time','ew','d12','s12','t12','p12'.....), delimiter=' ', converters = {0: str2date})

print(data['time'])

вывод:

00:00:01

Обратите внимание, что вам нужно .decode("utf-8") ваш ввод в str2date, так как принимает байты. Вы можете установить dtype в np.genfromtxt() в соответствии с указанным c содержимым файла.

Вы также можете использовать это, если ваши данные в правильном формате:

dt.datetime.strptime(time,"%H:%M:%S").time()
...