【Python】csvデータから日付を取得してdatetime型に変換する方法|漢字を含む日付にも対応

使用環境

  • OS:Windows 10 Pro(バージョン:20H2)
  • 言語:Python(pandas・datetime使用)

経緯

PythonでCSVファイルからデータを読み込んで処理をしている中で、
日付データを取得して、正しい形式(datetime型)に変換したいと思いました。

特に今回は、
「2022年6月23日」のように漢字を含んだ日付が入力されていたため、
通常の日付パースとは異なる対応が必要でした。

解決方法:置換とdatetime変換を組み合わせる

漢字をスラッシュ(/)に置き換えた後、
**datetime.strptime()**を使って、正しい日付型に変換する方法を取りました。


手順とコード例

① CSVファイルから日付データを取得する

import pandas as pd

df = pd.read_csv("sample.csv")

# (0,0)の位置に日付があると仮定
date_str = df.iat[0, 0]

② 漢字をスラッシュに置き換える

# 年・月・日をそれぞれ置き換え
tstr = date_str.replace('年', '/').replace('月', '/').replace('日', '')

③ datetime型に変換する

import datetime

# 文字列をdatetime型に変換
tdatetime = datetime.datetime.strptime(tstr, '%Y/%m/%d')

④ 年月日のみを取り出す(時間情報を除く)

# 年・月・日だけを取り出してdatetime.date型にする
tdate = datetime.date(tdatetime.year, tdatetime.month, tdatetime.day)

処理結果

tdateには、以下のような純粋な日付データが格納されます。

2022-06-23

これで、時刻(0時0分)が不要な場合にも、きれいに日付だけを取り出すことができます。


ポイントまとめ

  • CSVファイルから直接取得した日付が漢字を含む場合、**replace()**でスラッシュ(/)に変換するのが効果的です。
  • 変換後は、**datetime.strptime()で型変換を行い、さらにdatetime.date()**で年月日のみを抽出できます。
  • Pythonでは文字列型(str)と日付型(datetime型)は明確に区別されるため、変換処理は非常に重要です。

まとめ

Pythonでcsvデータから日付を取得して整形したい場合は、

  • まず漢字をスラッシュに置換
  • その後、datetime.strptime()でdatetime型に変換
  • 必要に応じてdatetime.date型へ変換

という流れを取ることで、
どんな形式の日付にも柔軟に対応できるようになります。

データクリーニングや前処理の場面で、非常に便利なテクニックです。

ここまでお読みいただき、誠にありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。