どうも、たぬきねこです!
Pandasでデータをいじっていると、文字列の日時データの列があって、そのデータをうまくDateTime型に変換して、データ抽出等を行いたい時があるとあると思います。
今回は文字列日時データを一括でDateTime型に変換する方法を紹介します。
環境
- python 3.6
- pandas 0.25.3
文字列日時データを一括する
では、さっそく変換してみます。
今回は以下のようなPandasのDataFrameを使います
print(data)
#=> 日時
# 0 2020-06-24 17:00:14
# 1 2020-06-24 16:53:18
# 2 2020-06-24 16:42:05
# 3 2020-06-24 16:41:03
# 4 2020-06-24 16:36:02
# .. ...
# 425 2020-05-21 20:05:23
# 426 2020-05-21 18:44:36
# 427 2020-05-21 18:34:03
# 428 2020-05-18 17:24:14
# 429 2020-05-18 17:18:31
この日時の部分をDateTime型に変換していきます。
方法1
pandasのto_datetimeという関数を使えば簡単に変換できます。
data["日時"] = pd.to_datetime(data["日時"], format="%Y-%m-%d %H:%M:%S", errors='coerce')
方法2:力技
基本的にはPandasのapply関数を使っていきます。
では、変換します。
import datetime
def convert_str_to_date(str_date):
date = datetime.datetime.strptime(str_date,"%Y-%m-%d %H:%M:%S")
return date
data["日時"] = data["日時"].apply(convert_str_to_date)
applyを使うことで指定した関数(convert_str_to_date)を特定の列(日時)に適用することができます。
convert_str_to_dateでは、前回の記事で紹介しましたが、文字日時をDateTime型に変換しています。
以上です!簡単ですね!
おわりに
今回はpandasのDataFrameの文字列日時データに対して、どのように一括でDataFrame型に変換するかを紹介しました。
なんだかんだ自分が毎回調べてしまうので、記事として残せてよかったです。
参考文献
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html