หากต้องการแปลง DateTimeIndex เป็น Series โดย ไม่รวม Timezone สามารถใช้ datetimeindex.tz_convert(None).to_series() เมธอด tz_convert(None) ใช้สำหรับลบ timezone ออก
ขั้นตอนการทำงาน
1. นำเข้าไลบรารีที่จำเป็น
import pandas as pd
2. สร้าง DatetimeIndex พร้อม Timezone
datetimeindex = pd.date_range(
'2021-10-18 07:20:32.261811624',
periods=5,
tz='Australia/Adelaide',
freq='40S'
)
3. แสดง DateTimeIndex
print("DateTimeIndex...\n", datetimeindex)
4. แปลงเป็น Series โดยไม่รวม Timezone
print("\nDateTimeIndex to Series โดยไม่รวม Timezone...\n",
datetimeindex.tz_convert(None).to_series())
ตัวอย่างโค้ดสมบูรณ์
import pandas as pd
# DatetimeIndex with period 5 and frequency as S i.e. seconds
# timezone is Australia/Adelaide
datetimeindex = pd.date_range(
'2021-10-18 07:20:32.261811624',
periods=5,
tz='Australia/Adelaide',
freq='40S'
)
# แสดง DateTimeIndex
print("DateTimeIndex...\n", datetimeindex)
# แสดง DateTimeIndex frequency
print("DateTimeIndex frequency...\n", datetimeindex.freq)
# แปลง DateTimeIndex เป็น Series
# ใช้ tz_convert(None) เพื่อลบ Timezone ออก
print("\nDateTimeIndex to Series โดยไม่รวม Timezone...\n",
datetimeindex.tz_convert(None).to_series())
ผลลัพธ์ที่คาดหวัง
DateTimeIndex... DatetimeIndex(['2021-10-18 07:20:32.261811624+10:30', '2021-10-18 07:21:12.261811624+10:30', '2021-10-18 07:21:52.261811624+10:30', '2021-10-18 07:22:32.261811624+10:30', '2021-10-18 07:23:12.261811624+10:30'], dtype='datetime64[ns, Australia/Adelaide]', freq='40S')
DateTimeIndex frequency... <40 * Seconds>
DateTimeIndex to Series โดยไม่รวม Timezone...
2021-10-17 20:50:32.261811624
2021-10-17 20:51:12.261811624
2021-10-17 20:51:52.261811624
2021-10-17 20:52:32.261811624
2021-10-17 20:53:12.261811624
Freq: 40S, dtype: datetime64[ns]
คำอธิบายสำคัญ:
tz_convert(None): แปลง timezone เป็น UTC แล้วลบ timezone info ออก (กลายเป็น timezone-naive)- เวลาจะเปลี่ยนจาก
+10:30(Adelaide) เป็น UTC:07:20 - 10:30 = 20:50(วันก่อนหน้า) - ผลลัพธ์เป็น
datetime64[ns]ไม่มี timezone - ต่างจาก
tz_localize(None)ที่แค่ลบ timezone info โดยไม่แปลงเวลา
เปรียบเทียบ tz_convert vs tz_localize
# tz_convert(None): แปลงเป็น UTC แล้วลบ tz (เวลาจะเปลี่ยน)
dt.tz_convert(None)
# tz_localize(None): ลบ tz โดยไม่แปลงเวลา (เวลาเดิมคงอยู่)
dt.tz_localize(None)