0
0

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 1 year has passed since last update.

【Python】CSVファイル名に記載のある日付を新しい列として追加してみた(その1)

Posted at

前提

  • 環境:Python 3.11.4
  • 細かいパスの指定は省略

今回のゴール

'2023-07-23_data.csv'という名のCSVファイルの2列目にdateという列を追加したい。
sample.py
#'2023-07-23_data.csv'の中身
>>> import pandas as pd
>>> df = pd.read_csv('2023-07-23_data.csv')
>>> df.head()
   id
0   1
1   2
2   3
3   4
4   5
sample.py
#完成系
#'2023-07-23_data.csv'の「2023-07-23」を抽出して、追加したい
    id        date
0    1  2023-07-23
1    2  2023-07-23
2    3  2023-07-23
3    4  2023-07-23
4    5  2023-07-23
5    6  2023-07-23

流れ

  1. CSVファイルを選択
  2. ファイル名から日付を抽出
  3. 新たな列に追加

1.CSVファイルを選択

sample.py
#該当のCSVファイルをfile_nameという変数に格納する
>>> file_name = '2023-07-23_data.csv'

2.ファイル名から日付を抽出

sample.py
#ファイル名の先頭から10文字を抽出
>>> date = file_name[0:10]
>>> date
'2023-07-23'

3.新たな列に追加

sample.py
>>> import pandas as pd
#'2023-07-23_data.csv'をデータフレーム化
>>> df = pd.read_csv(file_name)
#dateを新たな列として追加
>>> df['date'] = date
#中身を確認
>>> df.head()
   id        date
0   1  2023-07-23
1   2  2023-07-23
2   3  2023-07-23
3   4  2023-07-23
4   5  2023-07-23

まとめ

ファイル名から日付を抽出し、新たな列に格納することが出来ました。

以下に今までの内容をまとめた、サンプルコードを記載します。
ここまで見て頂き、下記のような感想を持った方もいると思います。

  • 先頭から何文字とかは汎用性が低い抽出方法だ。
  • 複数のファイルをまとめて、処理したい
汎用性の高い抽出方法や複数ファイルをまとめての処理についてはその2、その3で更新予定ですので、少々お待ちください。
sample.py
>>> import pandas as pd
>>> file_name = '2023-07-23_data.csv'
>>> df = pd.read_csv(file_name)
>>> date = file_name[0:10]
>>> df['date'] = date
>>> df.head()
   id        date
0   1  2023-07-23
1   2  2023-07-23
2   3  2023-07-23
3   4  2023-07-23
4   5  2023-07-23
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?