▶ 基本的な日付型の処理については、以下の投稿を参考にしてください。
はじめに
今回はタイムゾーンを扱います。海外のサービスを使っていると、サーバーが海外にあって、ログが現地時間になっていることがありますね。タイムゾーンを扱えると、現地時間→日本時間を簡単に変換することができるので有用です。是非、身につけましょう。
タイムゾーンを変換する
今回は、次のようなデータを扱いましょう。
あるサービスのフォーム提出のデータとなっており、「日時」にフォームの提出日、「解約」に解約したかどうか(0:継続、1:解約)のデータが格納されています。この「日時」のデータが「America/NewYork」時間で与えられているため、これを日本時間に変換して扱えるようにしましょう。
まずは型を確認しておきましょう。データ型はinfoで確認できましたね。
data.info()
「日時」の列はobject型(各要素がstr型)なので、これを日付型に変換しておきましょう。
data['日時']=pd.to_datetime(data['日時'])
type(data['日時'][0])
ここからタイムゾーンの設定とタイムゾーンの変換をしていきます。ポイントは、「日時」の列をindexに変換する、ことです。tz_convert()などはindexにしか適用できないためです。
data.index=pd.DatetimeIndex(data['日時'],name='日時')
次にこの作成したindexに対してタイムゾーンを設定します。
data.index=data.index.tz_localize('America/New_York')
data.head()
これでindexは「America/NewYork」のタイムゾーンが設定されています。実際にその表示を見ると、末尾に「-04:00」と表記されてますね。これが標準時との時差を表しています。
日本時間で表したいので、次にタイムゾーンの変換をおこないます。「Asia/Tokyo」に変換します。
data.index=data.index.tz_convert('Asia/Tokyo')
data.head()
indexのままでは使いにくければ、次のようにすることができます。
data['日時']=data.index
data=data.reset_index(drop=True)
data.head()
まとめ
いかがでしたか?いままで頑張って13時間足したりしてたんですが、慣れれば案外簡単ですね。もっと早くこうしていればよかった。
▶ 日付型に変換した後の日時操作に関する記事はこちらをご覧ください。
コメント