件数は少ないのですが、graph database 向けの csv をちょっと弄って (merge して) edge な csv を作る機会がありまして。
色々ググッてたら pandas 便利ってことで使ってみたので控えを以下に。
ざっくり
な手順として
- csv を読み込んで DataFrame にする
- 出力向けの DataFrame オブジェクト生成
- 一方の DataFrame を先頭から順に読みこみつつ Series 作って出力向けの DataFrame に追加
- 最後に DataFrame を csv として出力
みたいなカンジで Series 作るあたりがキモなのかどうか。
DataFrame へのアクセス
一方の DataFrame を先頭から順に、というあたりは以下なカンジで。
for i, series in xxx.iterrow():
これでこちらの DataFrame は行ごとに series でアクセス可能。
series[":END_ID(hoge_ID)"]
みたいなカンジ。もう一方の DataFrame については id がもう一方が持ってる ID と同期している形だったので
hogeFrame.loc[series[":START_ID(fuga_ID)"] - 1][":END_ID(hogehoge_ID)"]
みたいな形でアクセスしてました。あとは
obj = pd.Series(....)
out = out.append(obj, ignore_index=True)
みたいにして出力、だったのですが当初
out.append(obj, ignore_index=True)
みたいにしてて出ないな、って言いつつ
import pdb; pdb.set_trace()
していたりorz