Tukar Pandas Time-Aware DateTimeIndex kepada Naif Timestamp dalam Ditetapkan Zon Waktu
Panda menawarkan fungsi tz_localize untuk mencipta Cap Masa atau DateTimeIndex yang sedar zon waktu . Tetapi bagaimana jika anda ingin membuat asal operasi ini? Bagaimanakah anda menukar Cap Masa yang menyedari zon waktu kepada yang naif tanpa mengubah zon waktunya?
Masalah:
Mari kita pertimbangkan DateTimeIndex yang menyedari zon waktu:
<code class="python">t = pd.date_range(start="2013-05-18 12:00:00", periods=10, freq='s', tz="Europe/Brussels")</code>
Menetapkan zon waktu kepada Tiada mengalih keluar zon waktu tetapi menukar cap masa kepada UTC, mengubah masa yang boleh dilihat.
Penyelesaian (Pandas 0.15.0 ):
Sejak Pandas 0.15.0, kaedah tz_localize boleh digunakan untuk menetapkan zon waktu kepada Tiada. Ini mengalih keluar maklumat zon waktu sambil mengekalkan waktu tempatan:
<code class="python">t.tz_localize(None)</code>
Ini menghasilkan waktu tempatan yang naif DateTimeIndex.
Sebagai alternatif, tz_convert(Tiada) boleh digunakan untuk menukar kepada waktu UTC naif :
<code class="python">t.tz_convert(None)</code>
Pertimbangan Prestasi:
Kaedah tz_localize(Tiada) adalah jauh lebih cekap daripada menggunakan gelung untuk menggantikan maklumat zon waktu:
<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>
Atas ialah kandungan terperinci Bagaimana untuk Menukar DateTimeIndex Sedar Zon Waktu Pandas kepada Cap Waktu Naif dalam Zon Waktu Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!