【问题标题】:How to read into a pandas dataframe the wollowing json?如何将以下 json 读入 pandas 数据帧?
【发布时间】:2017-08-13 16:06:14
【问题描述】:

我有以下 json:

[
    [
        {
            "A": "2017-02-02T11:57:41+0000",
            "B": "agent",
            "C": "hi how are you son."
        },
        {
            "A": "2017-02-01T22:19:58+0000",
            "B": "user2",
            "C": "M contestan"
        },
        {
            "A": "2017-02-01T22:19:42+0000",
            "B": "user2",
            "C": "preetty thanks you?"
        },
        {
            "A": "2017-02-01T22:19:28+0000",
            "B": "user2",
            "C": "the cat sat over the fox"
        }
    ]
]

我怎样才能将它组合成这样的熊猫数据框?:

A B C
2017-02-02T11:57:41+0000 agent Hola Alex, si no has realizado la modificación de los datos afiliados, por favor confírmanos tu DNI, celular y operador para revisarlo. Gracias.
....
2017-02-01T16:22:30+0000 user1 Hola me han depositado un dinero a mi nombre, no tengo cuenta en este banco, puedo saber por aquí si ya puedo cobrar? DNI 42782263 gracias

我尝试使用:

df = pd.DataFrame.apply(lambda x: map(x.from_records, json_path))

df = pd.DataFrame('../path/file.json')

并且使用read_json(),但是它不起作用。因此,如何从 json 构建数据框?

【问题讨论】:

    标签: python json python-3.x pandas


    【解决方案1】:
    In [17]: import json
    

    假设您有以下 JSON 字符串:

    In [18]: s
    Out[18]: '[[{"A": "2017-02-02T11:57:41+0000", "B": "agent", "C": "Hola Alex, si no has realizado la modificacin de los datos afiliados, por
    favor confrmanos tu DNI, celular y operador para revisarlo. Gracias."}, {"A": "2017-02-01T22:19:58+0000", "B": "user2", "C": "Me podran ayud
    ar?, estoy llamando al CC y no contestan"}, {"A": "2017-02-01T22:19:42+0000", "B": "user2", "C": "No me llega el sms con la clave token"}, {
    "A": "2017-02-01T22:19:28+0000", "B": "user2", "C": "Tengo problemas para hacer pagos de servicios desde la app"}, {"A": "2017-02-01T22:19:1
    8+0000", "B": "user2", "C": "Buenas tardes"}], [{"A": "2017-02-01T22:19:12+0000", "B": "agent", "C": "Hola Alexander, as es, el dinero ya se
     encuentra disponible puedes acercarte a cualquiera de nuestras tiendas el nmero es 1703070024597. Buenas noches"}, {"A": "2017-02-01T16:22:
    30+0000", "B": "user1", "C": "Hola me han depositado un dinero a mi nombre, no tengo cuenta en este banco, puedo saber por aqu si ya puedo c
    obrar? DNI 42782263 gracias"}]]'
    

    你可以解析它:

    In [19]: data = json.loads(s)
    

    并构建一个 DataFrame:

    In [31]: pd.DataFrame.from_records(np.concatenate(data))
    Out[31]:
                              A      B                                        C
    0  2017-02-02T11:57:41+0000  agent  Hola Alex, si no has realizado la mo...
    1  2017-02-01T22:19:58+0000  user2  Me podran ayudar?, estoy llamando al...
    2  2017-02-01T22:19:42+0000  user2    No me llega el sms con la clave token
    3  2017-02-01T22:19:28+0000  user2  Tengo problemas para hacer pagos de ...
    4  2017-02-01T22:19:18+0000  user2                            Buenas tardes
    5  2017-02-01T22:19:12+0000  agent  Hola Alexander, as es, el dinero ya ...
    6  2017-02-01T16:22:30+0000  user1  Hola me han depositado un dinero a m...
    

    【讨论】:

    • 谢谢,Max... 但是该列表实际上是一个嵌套列表(即我有几个 dicts 列表),因此我只是将一个列表放入 df 中。我试图做:df = pd.DataFrame(*d[0])pd.DataFrame(d[0][:])... 在我之前的尝试中,我尝试映射或使用 lambda... 我该如何解决这个问题?。
    • 感谢马克斯的帮助!
    猜你喜欢
    • 2021-01-17
    • 2013-11-30
    • 2021-04-19
    • 2018-04-05
    • 2023-02-21
    • 1970-01-01
    • 2019-11-25
    • 2019-09-09
    相关资源
    最近更新 更多