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
廣告