pandasのDataFrameを作成する時は、CSVファイルからデータを読み込んだり、リストやndarrayから作成することが多いと思う。
しかしAPI経由で取得したデータの場合、大抵はJSON形式なのでdictに変換してからDataFrameを作成することになる。
辞書からDataFrameを作成する場合、キーを列にするか、インデックスにするかで、少し挙動が変わってくる。
スポンサーリンク
辞書のキーをカラム名としてDataFrame作成
DataFrameとして利用する前提のAPIなどの場合、この形式で良い感じになるようになっている(はず)。
import pandas as pd
dict_data = {
"key1": "val1",
"key2": "val2",
"key3": [1, 2, 3],
"key4": ["aaa", "bbb", "ccc"]
}
df1 = pd.DataFrame(data=dict_data)
print(df1)
key1 key2 key3 key4
0 val1 val2 1 aaa
1 val1 val2 2 bbb
2 val1 val2 3 ccc
辞書のキーをカラム名として扱いたい場合、dataに辞書を指定するだけ。
リストになっている値は展開される。
また、リストの長さが異なる場合、エラーとなる。
リスト以外の値についてはブロードキャストされる。
辞書のキーをインデックスとしてDataFrame作成
df2 = pd.DataFrame(data=dict_data.values(), // dataに辞書の値を指定
index=dict_data.keys(), // indexに辞書のキーを指定
columns=["value"]) // カラム名は適宜指定
print(df2)
value
key1 val1
key2 val2
key3 [1, 2, 3]
key4 [aaa, bbb, ccc]
この方法だとリストは展開されない(ので使う機会はあまりない)。
通常は、リストが展開される方法でDataFrameを作成し、転置する。
df1_t = df1.transpose()
print(df1_t)
0 1 2
key1 val1 val1 val1
key2 val2 val2 val2
key3 1 2 3
key4 aaa bbb ccc
スポンサーリンク
スポンサーリンク