はじめに
Python で既存の csv ファイルに新しい結果を書き込みたいので、その方法について調査した。備忘録を兼ねて記事にしておく。
データ準備
まず、簡単なcsvを用意する。以下に名前、年齢、性別が含まれているtest.csv を用意した。
import pandas as pd
df_read = pd.read_csv("./test.csv")
print(df_read)
NAME AGE SEX
0 Taro 33 Male
また、上書きする予定のデータフレームを用意する。二人分のデータを用意する。
add = np.array([["Jiro", "27", "Male"], ["Hanako", "21", "Female"]]).reshape(2, 3)
df_add = pd.DataFrame(add, columns=["NAME", "AGE", "SEX"])
print(df_add)
NAME AGE SEX
0 Jiro 27 Male
1 Hanako 21 Female
このtest.csvにdf_add のデータを直接上書きしたい。
csv
モジュールを用いた上書きの方法
csv
モジュールのcsv.writer
, writerow
を用いて実装する。
import csv
with open('./test.csv', 'a') as f:
writer = csv.writer(f, lineterminator='\n')
for ary in df_add.values:
writer.writerow(ary)
実行結果の確認を行うと、
df_read = pd.read_csv("./test.csv")
print(df_read)
NAME AGE SEX
0 Taro 33 Male
1 Jiro 27 Male
2 Hanako 21 Female
追記されているのが確認できた。
to_csv
コマンドを用いた上書きの方法
書き出したいのがデータフレームの場合、to_csv
コマンドでも追記することができる。
df_add.to_csv('./test.csv', mode='a', header=False)
実行結果の確認を行うと、
df_read = pd.read_csv("./test.csv")
print(df_read)
NAME AGE SEX
0 Taro 33 Male
1 Jiro 27 Male
2 Hanako 21 Female
3 Jiro 27 Male
4 Hanako 21 Female
再度二人分追記されているのが分かる。
おわりに
Python を実装する機会が増えてきたので、自分自身で調べたことはこうして記事に残していきたいと思う。