質問: df['date'].str.replace('年', '') ``` どなたか、手順2)まで求める方法を示唆して頂けるとありがたいです。 よろしくお願いします。
回答: 簡単に変換関数を書いてみました ``` import pandas as pd import numpy as np import datetime import re def conv(d): if isinstance(d, datetime.datetime): # DateTime型のデータはそのまま return d if isinstance(d, int): # Int型のデータは 1900/1/1 からの日数を計算 return datetime.datetime(1900,1,1) + datetime.timedelta(days=d) elif isinstance(d, str): # '****年'の形式の文字列をDateTime型に変換 res = re.match('(\d+)年$', d) if res: return datetime.datetime(int(res.group(1)),1,1) print(d , ":このデータは変換できませんでした") return np.nan df = pd.read_excel("dates.xlsx") df = df.applymap(conv) ``` 実際のデータで動作させてみないと全てのデータが変換できるかわかりませんが、とりあえず * Datetime型:そのまま * Int型:1900年1月1日からの日数としてDatetime型に変換 * 文字列:"XXXX年" の形式を Datetime型に変換 * 上記以外 : NaN を返す という実装となっておりますので、applymap() などを使って全てのデータに適用させてみると良いかと思います。 変換後は ``` print(df.dtypes) ``` を行って、"date"と"date2"列がDatetime型となっていることを確認ください