pd.read_json()返回具有1列的数据帧

时间:2019-08-28 15:39:38

标签: python json pandas python-3.7

当前,我正在尝试将webscrape中的json文件加载到python中,以便对某些列进行重新排序,删除一些文本,例如(\ n)等。json存在一些问题文件,则pd.read_json()有效(有点)。它返回一个带有1列名为“默认”的数据框。我当前的代码在下面,可以正常运行。

我尝试了本机JSON解释器,但是由于某些风格化的字符,我收到了错误消息。

def main():
    file_path = filedialog.askopenfilename()
    df = pd.read_json(file_path)
    print(df)

Json文件有效且格式如下:

{
    "Default": [{
        "ItemID": "11111",
        "Title": "A super captivating title",
        "Date": "July 22, 2019",
        "URL": "www.someurl.com",
        "BodyText": "some text."
    }, {
        "ItemID": "22222",
        "Title": "Even more captivating title",
        "Date": "July 12, 2019",
        "URL": "www.differenturl.com",
        "BodyText": "different text"
    }]
}

现在,我了解到“默认”被解释为JSON对象,以及为什么将其用作列。我尝试了几个不同方向的read_json(),但是得到的结果大致相同。

我希望将ItemID,Title,Date,URL和BodyText作为列,并将它们的值适当地指定为行。非常感谢您的帮助,我找不到类似的问题,但如果在之前已经回答过,请给我指出正确的方向。

1 个答案:

答案 0 :(得分:0)

没有read_json东方人可以做到。您需要将"Default"内容传递给DataFrame构造函数:

import json
import pandas as pd

with open('temp.txt') as fh:
    df = pd.DataFrame(json.load(fh)['Default'])