Convert Pandas Timezone-Aware DateTimeIndex to Naive Timestamp in Specified Timezone
Pandas は、タイムゾーン対応のタイムスタンプまたは DateTimeIndex を作成する tz_localize 関数を提供します。しかし、この操作を元に戻したい場合はどうすればよいでしょうか?タイムゾーンを変更せずにタイムゾーン対応のタイムスタンプを単純なタイムスタンプに変換するにはどうすればよいですか?
問題:
タイムゾーン対応の DateTimeIndex について考えてみましょう:
<code class="python">t = pd.date_range(start="2013-05-18 12:00:00", periods=10, freq='s', tz="Europe/Brussels")</code>
タイムゾーンを None に設定すると、タイムゾーンは削除されますが、タイムスタンプが UTC に変換され、表示される時間が変更されます。
解決策 (Pandas 0.15.0 ):
Pandas 0.15.0 以降、tz_localize メソッドを使用してタイムゾーンを None に設定できるようになりました。これにより、現地時間を維持しながらタイムゾーン情報が削除されます:
<code class="python">t.tz_localize(None)</code>
これにより、単純な現地時間 DateTimeIndex が生成されます。
あるいは、tz_convert(None) を使用して単純な UTC 時間に変換することもできます。 :
<code class="python">t.tz_convert(None)</code>
パフォーマンスに関する考慮事項:
tz_localize(None) メソッドは、ループを使用してタイムゾーン情報を置き換えるよりも大幅に効率的です:
<code class="python">%timeit t.tz_localize(None) 1000 loops, best of 3: 233 µs per loop %timeit pd.DatetimeIndex([i.replace(tzinfo=None) for i in t]) 10 loops, best of 3: 99.7 ms per loop</code>
以上がPandas のタイムゾーン対応 DateTimeIndex を特定のタイムゾーンの Naive タイムスタンプに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。