Python - 將巢狀字典列表轉換為 Pandas 資料框


多次 Python 會從各種來源接收資料,這些來源可以是 CSV、JSON 等不同格式,可以轉換為 Python 列表或字典等。但是若要使用 pandas 等包進行計算或分析,我們需要將此資料轉換為資料框。在本文中,我們將瞭解如何將給定的 Python 列表(其元素是巢狀字典)轉換為 pandas 資料框。

我們首先獲取巢狀字典列表以及從中提取資料行。然後,我們建立一個另一個迴圈,將行追加到新列表中,該列表最初是建立為空的。最後,我們應用 pandas 庫中的 DataFrames 函式來建立資料框。

示例

import pandas as pd

# Given nested dictionary
list = [
   {
      "Fruit": [{"Price": 15.2, "Quality": "A"},
         {"Price": 19, "Quality": "B"},
         {"Price": 17.8, "Quality": "C"},
      ],
      "Name": "Orange"
   },
   {
      "Fruit": [{"Price": 23.2, "Quality": "A"},
         {"Price": 28, "Quality": "B"}
      ],
      "Name": "Grapes"
   }
]

rows = []

# Getting rows
for data in list:
   data_row = data['Fruit']
   n = data['Name']

   for row in data_row:
      row['Name'] = n
      rows.append(row)

# Convert to data frame
df = pd.DataFrame(rows)
print(df)

執行以上程式碼為我們提供以下結果 −

輸出

Price Quality   Name
0 15.2    A Orange
1 19.0    B Orange
2 17.8    C Orange
3 23.2    A Grapes
4 28.0    B Grapes

應用透視表

我們還可以應用 pivot_table 函式來重新組織資料,以便按我們想要的方式整理。

示例

import pandas as pd

# List of nested dictionary initialization
list = [
   {
      "Fruit": [{"Price": 15.2, "Quality": "A"},
         {"Price": 19, "Quality": "B"},
         {"Price": 17.8, "Quality": "C"},
      ],
      "Name": "Orange"
   },
   {
      "Fruit": [{"Price": 23.2, "Quality": "A"},
         {"Price": 28, "Quality": "B"}
      ],
      "Name": "Grapes"
   }
]

#print(list)
rows = []

# appending rows
for data in list:
   data_row = data['Fruit']
   n = data['Name']

   for row in data_row:
      row['Name'] = n
      rows.append(row)

   # using data frame
df = pd.DataFrame(rows)

df = df.pivot_table(index='Name', columns=['Quality'],
               values=['Price']).reset_index()
print(df)

執行以上程式碼為我們提供以下結果 −

輸出

       Name Price         
Quality          A    B    C
0      Grapes 23.2 28.0 NaN
1      Orange 15.2 19.0 17.8

更新於: 2020 年 12 月 28 日

4K+ 次瀏覽

職業啟動

透過完成課程獲得認證

開始
廣告