Traffine I/O

日本語

2022-11-18

PandasのDataFrameを辞書に変換

はじめに

この記事では、PandasのDataFrameを辞書に変換する方法について説明します。

to_dictメソッド

PandasのDataFrameを辞書に変換するための主要な方法は、to_dict()関数です。この関数の構文は以下のようになります:

python
dataframe.to_dict(orient='dict', into=dict)

このメソッドは、orientintoパラメータを使用することで、柔軟な出力形式をに対応します。

Orient

orientパラメータとその可能な値について説明します。

dict

orientパラメータをdictに設定すると、外側の辞書のキーが列名を表し、内側の辞書に対応するデータが含まれる辞書の形式の辞書が作成されます。

python
import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

result = df.to_dict(orient='dict')
print(result)
{'A': {0: 1, 1: 2, 2: 3}, 'B': {0: 4, 1: 5, 2: 6}}

list

orientlistに設定すると、生成される辞書には列名がキーで、列データが値のリストとして含まれます。

python
result = df.to_dict(orient='list')
print(result)
{'A': [1, 2, 3], 'B': [4, 5, 6]}

series

orientseriesに設定すると、出力はPandas Seriesオブジェクトの辞書であり、キーが列名に対応します。

python
result = df.to_dict(orient='series')
print(result)
{'A': 0    1
1    2
2    3
Name: A, dtype: int64, 'B': 0    4
1    5
2    6
Name: B, dtype: int64}

split

splitオリエンテーションは、3つのキーindexcolumns、およびdataを持つ辞書を生成します。これらのキーの値は、それぞれインデックスラベル、列名、およびデータ値です。

python
result = df.to_dict(orient='split')
print(result)
{'index': [0, 1, 2], 'columns': ['A', 'B'], 'data': [[1, 4], [2, 5], [3, 6]]}

records

orientrecordsに設定すると、出力はDataFrameの各行を表す辞書のリストであり、各辞書のキーが列名に対応します。

python
result = df.to_dict(orient='records')
print(result)
[{'A': 1, 'B': 4}, {'A': 2, 'B': 5}, {'A': 3, 'B': 6}]

index

orientパラメータをindexに設定すると、外側の辞書のキーがインデックスラベルを表し、内側の辞書に対応するデータが含まれる辞書が作成されます。

python
result = df.to_dict(orient='index')
print(result)
{0: {'A': 1, 'B': 4}, 1: {'A': 2, 'B': 5}, 2: {'A': 3, 'B': 6}}

DataFrameをOrderedDictに変換

デフォルトでは、to_dict()関数は標準のPython辞書を返します。ただし、intoパラメータをcollections.OrderedDictに設定することで、DataFrameをOrderedDictに変換することもできます。OrderedDictは、辞書内のキーの順序を維持するため、特定のシナリオで役立つ場合があります。

orientパラメータをdictに設定して、DataFrameをOrderedDictに変換する例を見てみます。

python
import pandas as pd
from collections import OrderedDict

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

result = df.to_dict(orient='dict', into=OrderedDict)
print(result)
OrderedDict([('A', {0: 1, 1: 2, 2: 3}), ('B', {0: 4, 1: 5, 2: 6})])

出力結果は、列名('A'と'B')がキーで、対応するデータが内側の辞書として含まれるOrderedDictです。キーの順序はOrderedDictで保持されます。

orientの他の値を使用してDataFrameをOrderedDictに変換することもできます。例えば、orientrecordsに設定してDataFrameをOrderedDictに変換することができます。

python
result = df.to_dict(orient='records', into=OrderedDict)
print(result)
[OrderedDict([('A', 1), ('B', 4)]), OrderedDict([('A', 2), ('B', 5)]), OrderedDict([('A', 3), ('B', 6)])]

この場合、出力は、各辞書がDataFrameの1行を表し、キーの順序が辞書内で保持されているOrderedDictのリストです。

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!