Преобразовать столбец из кадра данных pandas из строки в тип списка [duplicate]

Использовать текстовое поле автозаполнения и задавать источник данных из удаленного API, особенно при работе с огромным набором данных. Это позволит избежать зависания вашего пользовательского интерфейса приложения при каждом поиске символов.

Ссылка: https://github.com/ghiden/angucomplete-alt

3
задан AMM 16 April 2014 в 21:26
поделиться

4 ответа

Как уже упоминалось в других вопросах, вы должны использовать literal_eval здесь:

from ast import literal_eval
df['col2'] = df['col2'].apply(literal_eval)

В действии:

In [11]: df = pd.DataFrame([[120, '[\'abc\',\'def\']'], [130, '[\'ghi\',\'klm\']']], columns=['A', 'B'])

In [12]: df
Out[12]:
     A              B
0  120  ['abc','def']
1  130  ['ghi','klm']

In [13]: df.loc[0, 'B']  # a string
Out[13]: "['abc','def']"

In [14]: df.B = df.B.apply(literal_eval)

In [15]: df.loc[0, 'B']  # now it's a list
Out[15]: ['abc', 'def']
10
ответ дан Andy Hayden 24 August 2018 в 09:51
поделиться

Возможно, попробуйте использовать другое значение разделителя? Так же:

DataFrame.to_csv(filepath, sep=';')

, а затем читать с помощью

DataFrame.from_csv(filepath, sep=';')
0
ответ дан Alex S 24 August 2018 в 09:51
поделиться

Nevermind получил его.

Все, что я должен был сделать, это

arr = s[1:-1].split(',')

. Это избавилось от квадратных скобок, а также разделило строку на массив, как я хотел.

3
ответ дан AMM 24 August 2018 в 09:51
поделиться

Без панд это один из способов сделать это, используя модули ast 'literal_eval():

>>> data = "['abc', 'def']"
>>> import ast
>>> a_list = ast.literal_eval(data)
>>> type(a_list)
<class 'list'>
>>> a_list[0]
'abc'
1
ответ дан shaktimaan 24 August 2018 в 09:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: