Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Pandas - แปลง DateTimeIndex เป็น Series

หากต้องการแปลง 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()SeriesIndex=datetime, Values=datetime
to_frame()DataFrameColumn=datetime, Index=0,1,2... (หรือ datetime ถ้า index=True)