Ваша ошибка
Ошибка говорит сама за себя.JSON недействителен.Где ты взял эту строку2?Вы печатаете это сами?
В этом случае вы должны заключить элементы в квадратные скобки []
и отделить элементы запятой ,
.
Рабочий пример:
import pandas as pd
import json
string2 = '[{"Country":"USA","Name":"Ryan"},{"Country":"Sweden","Name":"Sam"},{"Country":"Brazil","Name":"Ralf"}]'
df = pd.DataFrame(json.loads(string2))
print(df)
Возвращает:
Country Name
0 USA Ryan
1 Sweden Sam
2 Brazil Ralf
Интересно, что если вы слишком наблюдательны, в этой строке здесь df=pd.DataFrame([dict1])
вы фактически помещаете свой словарь в массив со скобками []
.Это потому, что pandas DataFrame принимает массивы данных.То, что вы на самом деле имеете в своем первом примере, это предмет, в этом случае серия имеет больше смысла или df = pd.Series(dict1).to_frame().T
.Или:
string1 = '[{"Country":"USA","Name":"Ryan"}]' # <--- brackets here to read json as arr
dict1 = json.loads(string1)
df=pd.DataFrame(dict1)
print(df)
И если вы поняли это, я думаю, вам станет легче понять, что нам нужно ,
для разделения элементов.
Альтернативные входы
Но давайте представим, что вы создаете этот набор данных самостоятельно, тогда вы можете пойти дальше и сделать это:
data = [("USA","Ryan"),("Sweden","Sam"),("Brazil","Ralf")]
dict1 = [{"Country":i, "Name":y} for i,y in data] # <-- dictionaries inside arr
df = pd.DataFrame(dict1)
Или:
data = [("USA","Ryan"),("Sweden","Sam"),("Brazil","Ralf")]
df = pd.DataFrame(dict1, columns=['Country','Name'])
Или, который я предпочел бы использовать CSV-структура:
data = '''\
Country,Name
USA,Ryan
Sweden,Sam
Brazil,Ralf'''
df = pd.read_csv(pd.compat.StringIO(data))