/var/log/messages

Sep 14, 2018 - 1 minute read - Comments - Python

Pandas and Csv

件数は少ないのですが、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