よく特徴を新しく作る時に使うのでメモ。
やりたいこと
csvファイルの二つのカラムに入った文字列形式の日時データ、その二つの日時データの日数の違いを一気に計算したい。
下のデータ形式だと end_date_time
- start_date_time
の日数の差を求めたい。
データ形式
data["start_date_time"]
, data["end_date_time"]
の中身は...
2014-12-22 02:12:32, 2015-01-21 05:15:03, 2016-02-02 06:13:31, 2014-09-02 03:11:12,
とします。data変数は適当な .csv
ファイルから pandas.read_csv(..)
でロードしたファイルです。
変換コード
from datetime import datetime from datetime import date import pandas as pd # data には上記のデータが入っているとします data = pd.read_csv('filename') # 文字列データを一括で datetime に変換します data["start_date_time"] = data["start_date_time"].apply(lambda x:datetime.strptime(x[:10], "%Y-%m-%d")) data["end_date_time"] = data["end_date_time"].apply(lambda x:datetime.strptime(x[:10], "%Y-%m-%d")) # 日数の差 day_difference = (data["end_date_time"]-data["start_date_time"]).apply(lambda x: x.days)
上記で x[:10]
としたのは 文字列 "2014-09-02 03:11:12" の後半はいらないため。同様の形式で分差などもできます。
しばしば日時データは欠損してる(という勝手な印象を持っている)ので正直上のような一個でもnullがあるとエラーになるコードは使いにくい。 そのため下のように外部に関数を定義します。
以下でも使用します.