Использование np.genfromtext () для разделения столбца даты в строке на два столбца типа Int с неделей и годом - PullRequest
0 голосов
/ 07 июня 2019

Я хочу использовать np.genfromtext() для чтения CSV в массив np. Один из столбцов моего файла данных - это дата «ГГГГ-ММ-ДД», которую функция считывает в виде двоичной строки. Я хочу импортировать данные этого столбца, но разделить его на столбец для года и столбец для номера недели ISO, оба значения: int или float. Это преобразование данных даст мне однородный массив.

В настоящее время я преобразую двоичную строку в строку utf-8, которую затем преобразовываю в объект datetime.date для применения date.isocalendar(). Эта функция возвращает кортеж целых чисел (Year, Month, Day. Однако из-за того, что кортеж не соответствует другим точкам данных типа int и float из других импортируемых столбцов, мой массив становится неоднородным. Я хотел бы сделать Year int одним столбцом и Month int другим.

Вот то, что я пытаюсь без раскола.

raw_data = np.genfromtxt('.../avocado.csv',delimiter=',', dtype = None, usecols = (1, 2, 3, 11), skip_header = 1, \
                         converters = {1:lambda x:dt.datetime.strptime(str(x, "utf-8"), '%Y-%m-%d').date().isocalendar()[:2],2:float,3: float, 11: lambda x: 0 if str(x, "utf-8") == "conventional" else 1})

Столбец 1 - это столбец со строками даты.

...