Edited at

PandasのデータフレームをCSVに書き込む

More than 1 year has passed since last update.

PandasのデータフレームからCSVへの追記の方法があまり見つからなかったので、備忘録を兼ねて書いてみる。

参考

Pandas のデータフレームを CSV ファイルやテキストファイルに出力する

環境

OS : macOS Sierra(10.12.3)

Python : 3.5.1

Pandas : 0.21.0

まず、pipでpandasを導入する。

$pip pandas

基本的な書き込み


employee.py

import pandas as pd

# データフレームを作成
df = pd.DataFrame([
["0001", "John", "Engineer"],
["0002", "Lily", "Sales"]],
columns=['id', 'name', 'job'])

# CSV ファイル (employee.csv) として出力
df.to_csv("employee.csv")


,id,name,job

0,0001,John,Engineer
1,0002,Lily,Sales

index部分がいらない場合はオプションを追加します。


employee.py

import pandas as pd

# データフレームを作成
df = pd.DataFrame([
["0001", "John", "Engineer"],
["0002", "Lily", "Sales"]],
columns=['id', 'name', 'job'])

# CSV ファイル (employee.csv) として出力
df.to_csv("employee.csv", index=False)


id,name,job

0001,John,Engineer
0002,Lily,Sales

日本語を含む場合はオプションでエンコードを指定します。しなかった場合文字化けする可能性があります。


employee.py

import pandas as pd

# データフレームを作成
df = pd.DataFrame([
["0001", "ジョン", "Engineer"],
["0002", "リリィ", "Sales"]],
columns=['id', 'name', 'job'])

# CSV ファイル (employee.csv) として出力
df.to_csv("employee.csv", index=False, encoding="utf-8")


id,name,job

0001,ジョン,Engineer
0002,リリィ,Sales

既に存在するCSVファイルに対して追記する場合はオプションでmodeとヘッダーの設定を変更します。


employee.py

import pandas as pd

# データフレームを作成
df = pd.DataFrame([
["0001", "ジョン", "Engineer"],
["0002", "リリィ", "Sales"]],
columns=['id', 'name', 'job'])
w = pd.DataFrame([["0003", "ジョー", "Teacher"]])

# CSV ファイル (employee.csv) として出力
# df.to_csv("employee.csv", index=False, encoding="utf-8", mode='a')

# CSV ファイル (employee.csv) に追記
w.to_csv("employee.csv", index=False, encoding="utf-8", mode='a', header=False)


id,name,job

0001,ジョン,Engineer
0002,リリィ,Sales
0003,ジョー,Teacher

以上です。

要するに.to_csvのオプションを変更すれば色々出来るという話でした。

今回紹介した以外のオプションは以下を参照してください。

pandas.DataFrame.to_csv