python pandas 日付
データフレーム(df)にカラム名「日付」があり、その列には日付が入力されているものとする。
object型からdatetime型に変更
object型からdatetime型に変更する、to_datetime関数。
第一引数に型の変更を行うSeriesを設定する。
df["日付"] = pandas.to_datetime( df["日付"] )
excelの日付シリアル値をdatetime型に変更する方法は、
オプション引数unitをDに、originを1899/12/30に設定する。
df["日付"] = pandas.to_datetime( df["日付"] , unit="D", origin="1899/12/30" )
datetime型からobject型に変更
datetime型からobject型に変更する、dtプロパティとstrftime関数。
Seriesからdtプロパティとstrftime関数を呼出し、
引数に表示形式を設定する。
年月日表示にする
df["日付"] = df["日付"].dt.strftime("%Y年%m月%d日")
「 / 」で区切る
df["日付"] = df["日付"].dt.strftime("%Y/%m/%d")
日付から曜日を取得する
日付から曜日を取得する、dt.dayofweekプロパティ。
戻り値は数値となり「0」は月曜日「6」は日曜日。
df["曜日"] = df["日付"].dt.dayofweek
表示形式を文字にする場合は、
df.loc[ df["曜日"] == 0 ] = "月曜日"
df.loc[ df["曜日"] == 1 ] = "火曜日"
のようにする。
今日の日付と比較する
今日の日付をdatetimeから取得する。
import datetime
today = datetime.datetime.today( )
df['日付'] <= today
エラー「Invalid comparison between dtype=datetime64[ns] and date」が
出る場合、todayは「datetime object」で、pandasの「datetime64[ns]」と、
比較できないことがある。
pandas.Timestamp()を使用し「Timestamp object」へ変換の後、比較演算子を使う。
today = pandas.Timestamp( today )
df['日付'] <= today
今日の日付と比較
import pandas
import datetime
df = pandas.read_excel("file.xlsx")
df['日付'] = pandas.to_datetime(df['日付'])
today = datetime.datetime.today()
today = pandas.Timestamp(today)
df.loc[df['日付'] <= today]