Преобразовать столбец в кадре данных из строки типа в кортеж - PullRequest
0 голосов
/ 04 мая 2020

У меня есть фрейм данных «data», в котором есть столбец «city», который выглядит как кортеж. Однако, когда я пытаюсь получить доступ к его элементу, он оказывается в строке. Как показано ниже:

data.city[0]

Вывод:

"(0, ['New York', 'Delhi', 'Bangkok'])"

Видимо все элементы представлены в строковом формате.

Я хочу получить следующий вывод:

(0, ['Нью-Йорк', 'Дели', 'Бангкок'])

Как мне этого добиться?

Спасибо

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Используйте ast.literal_eval. Хотя он может выдавать исключения, если у вас есть пустая строка. Итак, упаковка в str должна быть разумной:

from ast import literal_eval
df['city'] = df.city.apply(lambda x: literal_eval(str(x)))
1 голос
/ 04 мая 2020

Вы можете использовать ast.literal_eval

import ast
x = ast.literal_eval("(0, ['New York', 'Delhi', 'Bangkok'])")
print(x)
print(type(x))

Выход:

(0, ['New York', 'Delhi', 'Bangkok'])
<class 'tuple'>

В вашем случае вы можете использовать:

data.city = data.city.apply(ast.literal_eval)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...