นุ่น: วิธีคำนวณ timedelta เป็นเดือน


คุณสามารถใช้ฟังก์ชันต่อไปนี้เพื่อคำนวณเดลต้าเวลาเป็นเดือนระหว่างสองคอลัมน์ของ Pandas DataFrame:

 def month_diff(x, y):
    end = x. dt . to_period (' M '). view (dtype=' int64 ')
    start = y. dt . to_period (' M '). view (dtype=' int64 ')
    return end-start

ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ

ตัวอย่าง: คำนวณ Timedelta เป็นเดือนใน Pandas

สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' event ': ['A', 'B', 'C'],
                   ' start_date ': ['20210101', '20210201', '20210401'],
                   ' end_date ': ['20210608', '20210209', '20210801'] })

#convert start date and end date columns to datetime
df[' start_date '] = pd. to_datetime (df[' start_date '])
df[' end_date '] = pd. to_datetime (df[' end_date '])

#view DataFrame
print (df)

  event start_date end_date
0 A 2021-01-01 2021-06-08
1 B 2021-02-01 2021-02-09
2 C 2021-04-01 2021-08-01

ตอนนี้ สมมติว่าเราต้องการคำนวณเดลต้าเวลา (เป็นเดือน) ระหว่างคอลัมน์ start_date และ end_date

ขั้นแรกเราจะกำหนดฟังก์ชันต่อไปนี้:

 #define function to calculate time delta in months between two columns
def month_diff(x, y):
    end = x. dt . to_period (' M '). view (dtype=' int64 ')
    start = y. dt . to_period (' M '). view (dtype=' int64 ')
    return end-start

ต่อไป เราจะใช้ฟังก์ชันนี้เพื่อคำนวณส่วนต่างเวลาเป็นเดือนระหว่างคอลัมน์ start_date และ end_date :

 #calculate month difference between start date and end date columns
df[' month_difference '] = month_diff(df. end_date , df. start_date )

#view updated DataFrame
df

    event start_date end_date month_difference
0 A 2021-01-01 2021-06-08 5
1 B 2021-02-01 2021-02-09 0
2 C 2021-04-01 2021-08-01 4

คอลัมน์ Month_difference จะแสดงส่วนต่างเวลา (เป็นเดือน) ระหว่างคอลัมน์ start_date และ end_date

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่น ๆ ในแพนด้า:

วิธีแปลงคอลัมน์เป็น DateTime ใน Pandas
วิธีแปลง DateTime เป็นวันที่ใน Pandas
วิธีแยกเดือนจากวันที่ใน Pandas

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *