第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

將嵌套 json 讀取到數(shù)據(jù)框中

將嵌套 json 讀取到數(shù)據(jù)框中

ibeautiful 2023-10-06 18:35:45
我有一個(gè)json從 Firebase 導(dǎo)出的文件,如下所示。{  "reports" : {    "Google-Pixel 2 XL" : {      "-MIoCtD9YUF2G9Esfrfz" : {        "message" : "04 Oct 2020 23:25:17:047 onCreate MainActivity",        "timestamp" : 1601825117067      },      "-MIoCtFVOxu8wdEHtm6q" : {        "message" : "04 Oct 2020 23:25:17:214 onCreate Service",        "timestamp" : 1601825117216      },      "-MIoCyBtKMQqQzUHEXsW" : {        "message" : "04 Oct 2020 23:25:37:682 onStartCommand Service",        "timestamp" : 1601825137685      },      "-MIoFWll9r3qwzWNoGMn" : {        "message" : "04 Oct 2020 23:36:47:687: (1.3212517, 103.860314)",        "timestamp" : 1601825807693      }    },    "Vivo 1820" : {      "-MIoF14JUm6JMZrOzDlL" : {        "message" : "04 Oct 2020 23:34:37:623 onCreate MainActivity",        "timestamp" : 1601825677653      },      "-MIoF1A9ZZNqTu5W-rQD" : {        "message" : "04 Oct 2020 23:34:38:016 onCreate Service",        "timestamp" : 1601825678026      },      "-MIoF2gNDua9FfLBTg6q" : {        "message" : "04 Oct 2020 23:34:44:235 onCreate MainActivity",        "timestamp" : 1601825684248      }    }  }}我正在嘗試將其轉(zhuǎn)換為 4 列數(shù)據(jù)框,如下所示model             | id                   | message                               | timestampGoogle-Pixel 2 XL | -MIoCtD9YUF2G9Esfrfz | 04 Oct 2020 23:25:17:047 onCreate...  | 1601825117067Vivo 1820         | -MIoF14JUm6JMZrOzDlL | 04 Oct 2020 23:34:37:623 onCreate...  | 1601825677653我怎么做?我嘗試了各種方法和標(biāo)準(zhǔn)化,但似乎無法得到它。data = pd.read_json("firebase-file.json")df = pd.json_normalize(data, record_path="reports")謝謝。
查看完整描述

3 回答

?
慕容708150

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊

我認(rèn)為你需要自己壓平它,好在它并不復(fù)雜:


s = [[k, i, *j.values()] for k,v in data["reports"].items() for i, j in v.items()]


print (pd.DataFrame(s))


                   0                     1                                                  2              3

0  Google-Pixel 2 XL  -MIoCtD9YUF2G9Esfrfz     04 Oct 2020 23:25:17:047 onCreate MainActivity  1601825117067

1  Google-Pixel 2 XL  -MIoCtFVOxu8wdEHtm6q          04 Oct 2020 23:25:17:214 onCreate Service  1601825117216

2  Google-Pixel 2 XL  -MIoCyBtKMQqQzUHEXsW    04 Oct 2020 23:25:37:682 onStartCommand Service  1601825137685

3  Google-Pixel 2 XL  -MIoFWll9r3qwzWNoGMn  04 Oct 2020 23:36:47:687: (1.3212517, 103.860314)  1601825807693

4          Vivo 1820  -MIoF14JUm6JMZrOzDlL     04 Oct 2020 23:34:37:623 onCreate MainActivity  1601825677653

5          Vivo 1820  -MIoF1A9ZZNqTu5W-rQD          04 Oct 2020 23:34:38:016 onCreate Service  1601825678026

6          Vivo 1820  -MIoF2gNDua9FfLBTg6q     04 Oct 2020 23:34:44:235 onCreate MainActivity  1601825684248

分享


查看完整回答
反對 回復(fù) 2023-10-06
?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊

根據(jù) 的官方文檔,pd.json_normalize()它假設(shè)一個(gè)數(shù)組(列表)輸入。然而,原始的 json 遠(yuǎn)非字典列表之類的東西,最重要的是,鍵“id”不存在。因此我認(rèn)為絕對需要一個(gè)手工制作的解析器。

代碼

import pandas as pd

import json


file_path = "/mnt/ramdisk/in.json"


with open(file_path) as f:

    dic = json.load(f)


# discard the redundant "report" layer

dic = dic["reports"]


# produce a flattened list of dict

ls = []

for k1, v1 in dic.items():

    # k1 = model

    for k2, v2 in v1.items():

        # k2 = the hash-like id

        v2["model"] = k1

        v2["id"] = k2

        ls.append(v2)


df = pd.json_normalize(ls)

輸出


# Trim the message for printing purpose

df2 = df.copy()

df2["message"] = df["message"].apply(lambda s: s[:10])

df2


Out[28]: 

      message      timestamp              model                    id

0  04 Oct 202  1601825117067  Google-Pixel 2 XL  -MIoCtD9YUF2G9Esfrfz

1  04 Oct 202  1601825117216  Google-Pixel 2 XL  -MIoCtFVOxu8wdEHtm6q

2  04 Oct 202  1601825137685  Google-Pixel 2 XL  -MIoCyBtKMQqQzUHEXsW

3  04 Oct 202  1601825807693  Google-Pixel 2 XL  -MIoFWll9r3qwzWNoGMn

4  04 Oct 202  1601825677653          Vivo 1820  -MIoF14JUm6JMZrOzDlL

5  04 Oct 202  1601825678026          Vivo 1820  -MIoF1A9ZZNqTu5W-rQD

6  04 Oct 202  1601825684248          Vivo 1820  -MIoF2gNDua9FfLBTg6q

注意:深入到類哈希id所在的層似乎是有必要的。這是因?yàn)樽畛鮥d是keys,但似乎必須重新格式化它們才能values正確解釋為值pd.json_normalize。我在互聯(lián)網(wǎng)上的簡單調(diào)查也沒有找到使用簡單的內(nèi)置方法來解析這種遞歸結(jié)構(gòu)的示例。


查看完整回答
反對 回復(fù) 2023-10-06
?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

嘗試一下這個(gè)(參見我上面的評論)


import pandas as pd



data = []

for k, v in test['reports'].items():

    model_name = k

    for model in v.items():

        _data = {}

        _data['model'] = model_name

        _data['id'] = model[0]

        _data['message'] = model[1]['message']

        _data['timestamp'] = model[1]['timestamp']

        data.append(_data)

df = pd.DataFrame(data)

test你的數(shù)據(jù)在哪里,從而test['reports']訪問你想要解析的嵌套信息


查看完整回答
反對 回復(fù) 2023-10-06
  • 3 回答
  • 0 關(guān)注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號