Конвертировать pd dataframe в список - PullRequest
0 голосов
/ 11 марта 2019

У меня есть такой ввод txt:

["A" "B" "C" "D"]
[8 3 6 11]
[5 7 4 3]
14

Я читаю файл, используя:

df = pd.read_csv("data.txt", header = None, engine = 'python')

Затем я хотел бы преобразовать этот фрейм данных в списки.Я пытался сделать это:

L = df[0].iloc[0]
>>> '["A" "B" "C" "D"]'

Но затем, если я хочу получить первое значение, вывод будет

L[0]

>>> '['

Я уже пытался сделать

ast.literal_eval(L)

без успеха.Я получаю:

['ABCD']

Есть предложения?Спасибо!

1 Ответ

2 голосов
/ 11 марта 2019

Вы можете использовать Series.str.strip с Series.str.split:

df['new'] = df[0].str.strip('[]').str.split()
print (df)
                   0                   new
0  ["A" "B" "C" "D"]  ["A", "B", "C", "D"]
1         [8 3 6 11]         [8, 3, 6, 11]
2          [5 7 4 3]          [5, 7, 4, 3]
3                 14                  [14]

Если необходимы смешанные данные - list с скалярами, добавьте Series.mask для применяемого решения только для значений, начинающихся с [, проверенных Series.str.startswith :

df['new'] = df[0].mask(df[0].str.startswith('['), df[0].str.strip('[]').str.split())
print (df)
                   0                   new
0  ["A" "B" "C" "D"]  ["A", "B", "C", "D"]
1         [8 3 6 11]         [8, 3, 6, 11]
2          [5 7 4 3]          [5, 7, 4, 3]
3                 14                    14
...