Python 辞書を Pandas DataFrame に変換する方法
Asad Riaz
2021年3月24日
2020年4月1日
Pandas
Pandas DataFrame
-
dictionary
を PandasDataFame
に変換するメソッド -
Pandas
DataFrame
でキー
を列
に、値
を行
の値に変換するメソッド -
dict
をDataFrame
に変換するpandas.DataFrame().from_dict()
メソッド

Python の dictionary
を Pandas の datafarme
に変換する方法と、keys
を columns
に、values
を row
の値にするようなオプションを紹介します。ネストされた dictionary
を DataFrame
に変換することもできます。
また、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']))
辞書の keys
と values
は DataFrame
の 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
dict
を DataFrame
に変換する pandas.DataFrame().from_dict()
メソッド
from_dict
を使用して dict
を DataFrame
に変換します。ここでは、ディクショナリキーを行として使用し、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