【Python】pandas dateframeで日時を日付と時間に分ける
元データ
このようなデータフレームがあり、日付と時刻にばらしたい場合の話。
import pandas as pd
import datetime as dt
df = pd.DataFrame([dt.datetime(2020,6,1,0,0,0),dt.datetime(2020,6,2,10,0,0),dt.datetime(2020,6,3,15,0,0)],columns=['datetimes'])
    datetimes
0 2020-06-01 00:00:00
1 2020-06-02 10:00:00
2 2020-06-03 15:00:00
日付と時刻にばらすコード
無名関数とapplyメソッドでこう書けます。
df['dates'] = df['datetimes'].apply(lambda x : dt.date(x.year,x.month,x.day))
df['times'] = df['datetimes'].apply(lambda x : dt.time(x.hour,x.minute,x.second))
     datetimes      dates   times
0 2020-06-01 00:00:00 2020-06-01 00:00:00
1 2020-06-02 10:00:00 2020-06-02 10:00:00
2 2020-06-03 15:00:00 2020-06-03 15:00:00
文字列で取り出したいときは以下です。
df['dates'] = df['datetimes'].apply(lambda x : x.strftime('%Y/%m/%d'))
df['times'] = df['datetimes'].apply(lambda x : x.strftime('%H:%M:%S'))
datetimes dates times
0 2020-06-01 00:00:00 2020/06/01 00:00:00
1 2020-06-02 10:00:00 2020/06/02 10:00:00
2 2020-06-03 15:00:00 2020/06/03 15:00:00
以上
Pythonを一から学ぶのにおすすめの本はコチラ