Pandas to_csvで標準出力にcsvファイルを出力する

シンプルにsys.stdoutを指定することで実現可能

pandasのバージョンによってはエラーが発生したこともあったようだけど比較的新しいバージョンなら問題なさそう

🕒 Last mod: 2021-08-05


1. pandas.DataFrameのcsvファイルを標準出力に出力したい

to_csvを使用することで簡単にcsvファイルを作成できます。

ただファイル名の指定が面倒なので標準出力を使用する方法を調べました。

標準入力と標準出力を使用する方法ならシェル上でのリダイレクトやパイプラインが活用できて便利そうです。

基本的にはsys.stdoutを指定するだけで実現できます。

ただ、検索すると単純にsys.stdoutを指定するだけではなく、io.StringIOを使用する情報もいくつか見つかって少しだけ混乱しました。

pandasのバージョンが古いとsys.stdoutを指定したときにバグがあったようです。比較的新しいpandasであれば問題なさそうです。

2. 実装

sys.stdoutを指定するだけなのでとても簡単な実装です。

難しいことはなにもありませんがとりあえず試して見た結果のメモです。

example.py
import sys
import pandas as pd


dat = pd.DataFrame(
    dict(
        a=[1, 2],
        b=[3, 4],
    )
)

dat.to_csv(
    sys.stdout,
    index=False,
)
output
In [3]:
dat.to_csv(
    sys.stdout,
    index=False,
)
--
a,b
1,3
2,4