Каков наилучший способ преобразовать строку в кадре данных pandas в список? - PullRequest
0 голосов
/ 25 августа 2018

В основном у меня есть фрейм данных со списками, которые были прочитаны как строки, и я хотел бы преобразовать их обратно в списки.

Ниже показано, что я делаю в настоящее время, но я все еще учусь и чувствую, что должен быть лучший (более эффективный / Pythonic) способ сделать это. Любая помощь / конструктивная критика будет высоко ценится!

import pandas as pd
import ast

df = pd.DataFrame(data=['[-1,0]', '[1]', '[1,2]'], columns = ['example'])
type(df['example'][0])
>> str

n = df.shape[0]
temp = []
temp2 = []

for i in range(n):
    temp = (ast.literal_eval(df['example'][i]))
    temp2.append(temp)

df['new_col_lists'] = temp2
type(df['new_col_lists'][0])
>> list

Ответы [ 3 ]

0 голосов
/ 25 августа 2018

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

Ex:

import pandas as pd
import ast

df = pd.DataFrame(data=['[-1,0]', '[1]', '[1,2]'], columns = ['example'])
df['example'] = df['example'].apply(ast.literal_eval)
print( type(df['example'][0]) )

Выход:

<type 'list'>
0 голосов
/ 25 августа 2018

Вы можете использовать apply с лямбдой, которая разбивает и преобразует ваши строки:

df['new_col_lists'] = df['example'].apply(lambda s: [int(v.strip()) for v in s[1:-1].split(',')])

При необходимости используйте метод float вместо int.

0 голосов
/ 25 августа 2018

Может быть, вы могли бы использовать карту:

df['example'] = df['example'].map(ast.literal_eval)

С пандами почти всегда есть способ избежать цикла for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...