【python】二重の辞書型配列をDataFrame型にする
現状課題
自動化するために既存のシステムが正常に動く必要があります。
また、今後の更新予定にも記載している通り、Windowsのタスクスケジューラを使う予定のため、エラーが起きた場合の対応を基本的にプログラム内で記述しなければいけません。本日は手動でデータの収集を実施してみたところ、現状データとのマージがうまくいきませんでした。そのためデータ加工の手間が必要でした。
問題点/対応
やはり、趣味で自己学習のためほぼ設計を考えずに対応していることが問題でした。
詳細
初期の情報取集のタイミングではデータはdatafram型になるようにしていた。しかし、更新では二重の辞書型になるように情報を取得したためエラーになりました。
対応
二重の辞書型をdatafram型になるように関数を作成しました。
今回自身が扱っているデータは馬の特徴などが列、競馬のレースごとに番号を行として振っていてその中に馬名や、馬番などがある状態です。
こんな感じ
レース | 馬名 | 馬番 |
---|---|---|
レース1 | 馬名1 | 馬番1 |
レース1 | 馬名2 | 馬番2 |
この通りレース番号が重複しているため、単純なdataframe型への変換ができませんでした。
単純なdataframe型→
df = pd.DataFrame(d.values(), index=d.keys()).T
※dが二重配列です。
そのためこんな感じにしました。
df = pd.DataFrame()
for key in d.keys():
result = pd.DataFrame()
result = pd.DataFrame(d[key].values(), index=d[key].keys()).T
result['index'] = key
result = result.set_index('index')
results = pd.concat([results,result])
return results
考え方としてはインデックスの振り直しした感じです。
簡単ですがこんな感じでした。