Кажется, что у ваших значений столбца есть дополнительное число перед фактической строкой json.Так что вы можете сначала удалить это (перейдите к Method , если это не так)
Один из способов сделать это - применить функцию к столбцу
# constructing the df
df = pd.DataFrame([['0 {"a":"1","b":"2","c":"3"}'],['1 {"a" :"4","b":"5","c":"6"}']], columns=['json'])
# print(df)
json
# 0 0 {"a":"1","b":"2","c":"3"}
# 1 1 {"a" :"4","b":"5","c":"6"}
# function to remove the number
import re
def split_num(val):
p = re.compile("({.*)")
return p.search(val).group(1)
# applying the function
df['json'] = df['json'].map(lambda x: split_num(x))
print(df)
# json
# 0 {"a":"1","b":"2","c":"3"}
# 1 {"a" :"4","b":"5","c":"6"}
Метод:
Как только df
будет в указанном выше формате, нижеприведенная запись преобразует каждую запись строки в словарь:
df['json'] = df['json'].map(lambda x: dict(eval(x)))
Затем, применение pd.Series
к столбцу сделает работу
d = df['json'].apply(pd.Series)
print(d)
# a b c
# 0 1 2 3
# 1 4 5 6