LoginSignup
50
70

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-11-07

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

50
70
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
70