@hudozhnin

Как конвертировать в python массив типа object в нормальный массив, например, nparray?

Есть CSV файл, который я загружаю в pandas dataframe.
Данные в целевой колонке в оригинальном файле выглядят, например, так:
"[1 2 3 4 42]"

Числа, разделенные пробелами, должны в конечном итоге быть отдельными элементами массива, то есть из этого вхождения должен получится массив вида [1, 2, 3, 4, 42] и соответствующего типа (nparray или любого другого, который можно передавать как матрицу факторов в модели sklearn).
Загружаются они в pandas frame в итоге просто как [1 2 3 4 42] и представляют собой элементы типа object (не очень понимаю, что это значит, я в питоне новичок).
Подскажите, пожалуйста, как это преобразовать в массив, извините, если совсем просто, я честно потратил на гугл несколько часов, отчаялся.
  • Вопрос задан
  • 1478 просмотров
Решения вопроса 1
sim3x
@sim3x
используй iPython/Jupiter для експериментов

Тебе на аход пришла строка, а требуется list
In [1]: x = "[1 2 3 4 42]"

In [2]: type(x)
Out[2]: builtins.str

In [3]: help(type(x))

# хелп дает описание того что внутри находится

Help on class str in module builtins:

class str(object)
 |  str(object='') -> str
 |  str(bytes_or_buffer[, encoding[, errors]]) -> str
 |  
 |  Create a new string object from the given object. If encoding or
 |  errors is specified, then the object must expose a data buffer
 |  that will be decoded using the given encoding and error handler.
 |  Otherwise, returns the result of object.__str__() (if defined)
 |  or repr(object).
 |  encoding defaults to sys.getdefaultencoding().
 |  errors defaults to 'strict'.
####################

# убрали скобки и разсплитили строку в массив
In [4]: y = x.replace('[', '').replace(']', '').split()

In [5]: y
Out[5]: ['1', '2', '3', '4', '42']
# прошлись по массиву и правратили строки в интеджер
In [6]: z = [int(n) for n in y]

In [7]: z
Out[7]: [1, 2, 3, 4, 42]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект