json文件的正确格式…然后是数据帧

json文件的正确格式…然后是数据帧,json,pandas,dataframe,jupyter-notebook,notepad,Json,Pandas,Dataframe,Jupyter Notebook,Notepad,我有一个记事本文件,我把它另存为json文件,我试图在数据框中读取它 我的json文件如下所示: { "date" : "2000-01-01", "i" : "1387", "xxx" : "aaaa", }, { "fecha" : "2000-01-02", "indicativo" : &

我有一个记事本文件,我把它另存为json文件,我试图在数据框中读取它

我的json文件如下所示:

{
  "date" : "2000-01-01",
  "i" : "1387",
  "xxx" : "aaaa",
}, 
{
  "fecha" : "2000-01-02",
  "indicativo" : "1387",
  "xxx" : "aaaa",
}, 
{
  "data" : "2000-01-03",
  "indicativo" : "1387",
}, 
{
  "date" : "2000-01-04",
  "i" : "1387",
  "xxx" : "aaaa",
}, 
{
  "fecha" : "2000-01-05",
  "indicativo" : "1387",
  "xxx" : "aaaa",
}
如何使用代码将其更改为正确的json格式?(请记住,我刚刚发布了一些行,实际的json文件有数百行,因此手动执行是不切实际的)

一旦我有了那个文件,代码就是:

将熊猫作为pd导入
从pandas.io.json导入json_规范化
name=pd.read_json(r“file.json”,lines=True,orient='records')
我尝试使用json文件运行上述代码,但始终得到:

ValueError: Expected object or value.

经过多次尝试和错误,我相信这是由于它不是正确的json格式,因此如果有人至少在第一部分帮助我,我将不胜感激。

我认为您的json文件应该在开头和结尾都有
[]

  • 问题在于如何使用代码将其更改为正确的json格式?
  • 给定文件中显示为逗号行和
    \n
    分隔字典的内容
  • 通过将
    [
    添加到文件开头和
    ]
    添加到文件结尾,读取并修复文件。
    • 文件修复后,无需再次修复
  • 使用将文件读回
    • 字典列表可以加载到pandas中,但每个
      dict
      中有不同的
      键,因此可能需要进行一些额外的清理
导入json
作为pd进口熊猫
从pathlib导入路径
#文件路径
p=Path('e:/PythonProjects/stack\u overflow/test.json')
#读取并修复该文件
p.open('r+')作为f:
file=f.read()#将文件作为长字符串读入
file='['+file+']'#在字符串的开头和结尾添加字符
f、 查找(0)#查找文件的开头
f、 写入(文件)#将新数据写回文件
f、 truncate()#删除旧数据
#用代码修复文件后
df=pd.read_json(p)
#显示(df)
日期i xxx fecha指示数据
0 2000-01-01 1387 aaaa南部
南南aaaa 2000-01-02 1387南南
2南1387 2000-01-03
3 2000-01-04 1387 aaaa南部
4南南aaaa 2000-01-05 1387南南

我认为您的数据文件是一个字典列表,但缺少开始和结束方括号。(文件不是JSON,因为有字典(值),但没有键)

上面的响应显示了如何添加“[”和“]”

执行此操作后,可以直接调用DataFrame构造函数:

data = [
    {
      "date" : "2000-01-01",
      "i" : "1387",
      "xxx" : "aaaa",
    }, 
    {
      "fecha" : "2000-01-02",
      "indicativo" : "1387",
      "xxx" : "aaaa",
    }, 
    # remaining dictionaries, omitted, to save space
]

pd.DataFrame(data)

谢谢,我添加了这个,但是我得到了这个错误:JSONDecodeError:期望属性名包含在双引号中:第5行第1列(char 62)@mariancatholic我复制了相同的json,并在我的文件
abcd.json
中围绕它放置
[]
,然后像
name=pd.read\u json(“abcd.json”)
一样读取文件。它起作用了,
name
对象的数据框架也将json直接放入代码中,如so
pd.dataframe(json.loads('[{“date”:“2000-01-01”,“i”:“1387”,“xxx”:“aaaa”},{“date”:“20200-01-01”,“i”:“1387”,“xxx”:“aa2aa”}))
对我起作用。