Python 辞書を Pandas DataFrame に変換する方法

Asad Riaz 2023年1月30日
  1. dictionary を Pandas DataFame に変換するメソッド
  2. Pandas DataFrameキーに、の値に変換するメソッド
  3. dictDataFrame に変換する pandas.DataFrame().from_dict() メソッド
Python 辞書を Pandas DataFrame に変換する方法

Python の dictionary を Pandas の datafarme に変換する方法と、keyscolumns に、valuesrow の値にするようなオプションを紹介します。ネストされた dictionaryDataFrame に変換することもできます。

また、pandas.DataFrame.from_dict を使用した別のアプローチを紹介します。これを任意の rename メソッドとチェーンして、インデックスと列の名前を一度に設定します。

dictionary を Pandas DataFame に変換するメソッド

Pandas の DataFrame コンストラクターpd.DataFrame() は、辞書自体ではなく、コンストラクターの引数として辞書の items が指定されている場合、辞書を DataFrame に変換します。

# python 3.x
import pandas as pd

fruit_dict = {3: "apple", 2: "banana", 6: "mango", 4: "apricot", 1: "kiwi", 8: "orange"}

print(pd.DataFrame(list(fruit_dict.items()), columns=["Quantity", "FruitName"]))

辞書の keysvaluesDataFrame の 2つの列に変換され、オプション columns で指定された列名が付けられます。

   Quantity FruitName
0         3     apple
1         2    banana
2         6     mango
3         4   apricot
4         1      kiwi
5         8    orange

Pandas DataFrameキーに、の値に変換するメソッド

次のように、辞書を角括弧で囲み、上記のコードから列名を削除するだけです。

import pandas as pd

fruit_dict = {1: "apple", 2: "banana", 3: "mango", 4: "apricot", 5: "kiwi", 6: "orange"}

print(pd.DataFrame([fruit_dict]))

出力:

       1       2      3        4     5       6
0  apple  banana  mango  apricot  kiwi  orange

Pandas の 辞書内包concat を使用してすべての辞書を組み合わせ、リストを渡して新しい列名を指定します

次のコードを考えてください、

import pandas as pd

data = {"1": {"apple": 11, "banana": 18}, "2": {"apple": 16, "banana": 12}}
df = pd.concat({k: pd.Series(v) for k, v in data.items()}).reset_index()
df.columns = ["dict_index", "name", "quantity"]
print(df)

出力:

  dict_index    name  quantity
0          1   apple        11
1          1  banana        18
2          2   apple        16
3          2  banana        12

dictDataFrame に変換する pandas.DataFrame().from_dict() メソッド

from_dict を使用して dictDataFrame に変換します。ここでは、ディクショナリキーを行として使用し、rename() メソッドを適用して列名を変更するために orient='index'を設定します。

次のコードについて考えます。

import pandas as pd

print(
    pd.DataFrame.from_dict(
        {"apple": 3, "banana": 5, "mango": 7, "apricot": 1, "kiwi": 8, "orange": 3},
        orient="index",
    ).rename(columns={0: "Qunatity"})
)

出力:

         Quantity
apple           3
banana          5
mango           7
apricot         1
kiwi            8
orange          3

関連記事 - Pandas DataFrame