Вы можете использовать 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