簡體   English   中英

擴展字典列表 dataframe

[英]Expanding List of Dicts dataframe

嘗試了一段時間,無法得到我想要的結果。

輸入:

"cursor":"YXJyYXljb25uZWN0aW9uOjA=",
"node":{
      "class":1,
      "end": [
          {"part": "a", "see" : "c"},
          {"part": "b", "see" : "c"}
       ]
}

在 DF 中需要 output。

cursor                     class       end.part    end.see            
YXJyYXljb25uZWN0aW9uOjA      1           a            c
YXJyYXljb25uZWN0aW9uOjA      1           b            c

我嘗試使用 json_normalise 但無法正常工作。

任何幫助將不勝感激!

謝謝!

這是另一個解決方案:

#!/usr/bin/python3
import pandas as pd

dic = {
    "cursor":"YXJyYXljb25uZWN0aW9uOjA=",
    "node":{
        "class":1,
        "end": [
            {"part": "a", "see" : "c"},
            {"part": "b", "see" : "c"}
        ]
    }
}

# 1. Use `meta` to specify what we want to show in the result
# 2. Use 'record_path` to flatten the nested list
df = pd.json_normalize(dic, meta=['cursor', ['node', 'class']], 
                       record_path=['node', 'end'] , record_prefix='end.')

# Rename the 'node.class' column to 'class'
df = df.rename(columns={'node.class': 'class'})

# Reindex by the order of columns list
df = df.reindex(columns=['cursor', 'class', 'end.part', 'end.see'])

print(df)

pd.json_normalise參考: https://towardsdatascience.com/all-pandas-json-normalize-you-should-know-for-flattening-json-13eae1dfb7dd

嘗試:

d = {
    "cursor": "YXJyYXljb25uZWN0aW9uOjA=",
    "node": {
        "class": 1,
        "end": [{"part": "a", "see": "c"}, {"part": "b", "see": "c"}],
    },
}

df = pd.json_normalize(d).explode("node.end")
x = df.pop("node.end").apply(pd.Series).add_prefix("end.")
df = pd.concat([df, x], axis=1)
print(df)

印刷:

                     cursor  node.class end.part end.see
0  YXJyYXljb25uZWN0aW9uOjA=           1        a       c
0  YXJyYXljb25uZWN0aW9uOjA=           1        b       c

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM