หากต้องการแปลง DateTimeIndex เป็น Series สามารถใช้เมธอด DatetimeIndex.to_series() ได้โดยตรง
ขั้นตอนการทำงาน
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 เป็น Series
print("\nDateTimeIndex to Series...\n", datetimeindex.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
print("\nDateTimeIndex to Series...\n", datetimeindex.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...
2021-10-18 07:20:32.261811624+10:30 2021-10-18 07:20:32.261811624+10:30
2021-10-18 07:21:12.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:21:52.261811624+10:30
2021-10-18 07:22:32.261811624+10:30 2021-10-18 07:22:32.261811624+10:30
2021-10-18 07:23:12.261811624+10:30 2021-10-18 07:23:12.261811624+10:30
Freq: 40S, dtype: datetime64[ns, Australia/Adelaide]
คำอธิบาย:
- Series ที่ได้จะมี index = ค่า DateTime เดิม และ values = ค่า DateTime เดียวกัน
- Timezone
Australia/Adelaideถูกเก็บรักษาไว้ - Frequency
40Sถูกสืบทอดมา - แต่ละค่าปรากฏ 2 ครั้ง เพราะ Series แสดงเป็น key-value pairs (index: value)
การใช้งาน Series ที่ได้
series = datetimeindex.to_series()
# เข้าถึงค่า
print(series.iloc[0])
# กรองข้อมูล
print(series[series.dt.hour == 7])
# Resample (ต้องมี frequency)
print(series.resample('1T').count())
ความแตกต่างจาก to_frame()
| เมธอด | ผลลัพธ์ | โครงสร้าง |
|---|---|---|
to_series() | Series | Index=datetime, Values=datetime |
to_frame() | DataFrame | Column=datetime, Index=0,1,2... (หรือ datetime ถ้า index=True) |