はじめに
dictからPandasのDataFrameを作成するという、ググればすぐ出てくるような話だが、ちょっと悩んだのでメモを残しておく。
課題
Pandasを利用して、以下のようなdata1
から、
data1 = [ {'col1': 1, 'col2': 2}, {'col1': 3, 'col2': 4} ]
以下のようなDataFrame
を作成したい。
col1 | col2 | |
---|---|---|
0 | 1 | 2 |
1 | 3 | 4 |
ところが、ググった感じでは以下のようなdata2
に変換が必要に思えた。
data2 = { 'col1': [1, 3], 'col2': [2, 4] }
自分が扱う業務データは、ほぼ100%列ごとではなく行ごとに整理されているので、これだと変換の手間がバカにならない。
結論
実は、そのままのdata1
で期待するDataFrame
が作れた。
import pandas as pd data1 = [ {'col1': 1, 'col2': 2}, {'col1': 3, 'col2': 4}, ] df = pd.DataFrame(data1) print(df)
出力結果は、以下のように期待通り。
col1 col2 0 1 2 1 3 4
ちなみに、以下の方法でDataFrame
を作成しても同じ結果を得られる。
df = pd.DataFrame.from_records(data1)
ハマりどころ
様々な方法でDataFrame
を作成できるのだが、DataFrameのドキュメントのExamplesにはdata1
のパターンの記載がないので、data1
が受け入れられないように読めてしまった。
しかし、よく読むとNoteに以下の記載があり、
Please reference the User Guide for more information.
User Guideのリンクを辿ると、より詳しくDataFrame
の作成のバリエーションが説明されている。
APIリファレンスには必要事項が網羅的に書かれているという思い込みがあったので、User Guideに辿り着くまでに時間がかかってしまった。