Я хочу использовать 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 - это столбец со строками даты.