У меня есть этот текстовый ввод:
["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']
Любое предложение? Спасибо!
присвоить его переменной
Что вы имеете в виду присвоить его переменной? Не могли бы вы поместить ожидаемый фрейм данных для соответствующего ввода?






Вы можете использовать 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]
Если необходимы смешанные данные - lists со скаляром(ами) добавьте 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
Итак, что бы вы сделали с четвертой строкой вашего ввода, «14»?