1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python で csv に上書きする方法

Last updated at Posted at 2021-09-03

はじめに

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 を実装する機会が増えてきたので、自分自身で調べたことはこうして記事に残していきたいと思う。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?