ภาพรวม
เปรียบเทียบค่า Timestamp ระหว่างสองคอลัมน์ (Date_of_Purchase vs Date_of_Service) สำหรับแถวเฉพาะ (index 0, 1, 2) โดยใช้ index-based access
ตัวอย่างโค้ด
import pandas as pd
dataFrame = pd.DataFrame({
"Car": ["Audi", "Lexus", "Tesla", "Mercedes", "BMW"],
"Date_of_Purchase": [
pd.Timestamp("2021-06-10"),
pd.Timestamp("2021-07-11"),
pd.Timestamp("2021-06-25"),
pd.Timestamp("2021-06-29"),
pd.Timestamp("2021-03-20")
],
"Date_of_Service": [
pd.Timestamp("2021-11-05"),
pd.Timestamp("2021-12-03"),
pd.Timestamp("2021-10-30"),
pd.Timestamp("2021-11-29"),
pd.Timestamp("2021-08-20")
]
})
print("DataFrame...\n", dataFrame)
# เปรียบเทียบแถวที่ 0, 1, 2 (index-based)
timestamp1_diff = abs(dataFrame['Date_of_Purchase'][0] - dataFrame['Date_of_Service'][0])
timestamp2_diff = abs(dataFrame['Date_of_Purchase'][1] - dataFrame['Date_of_Service'][1])
timestamp3_diff = abs(dataFrame['Date_of_Purchase'][2] - dataFrame['Date_of_Service'][2])
print("\nDifference Car 1 (index 0):", timestamp1_diff)
print("Difference Car 2 (index 1):", timestamp2_diff)
print("Difference Car 3 (index 2):", timestamp3_diff)
ผลลัพธ์
DataFrame...
Car Date_of_Purchase Date_of_Service
0 Audi 2021-06-10 2021-11-05
1 Lexus 2021-07-11 2021-12-03
2 Tesla 2021-06-25 2021-10-30
3 Mercedes 2021-06-29 2021-11-29
4 BMW 2021-03-20 2021-08-20
Difference Car 1 (index 0): 148 days 00:00:00
Difference Car 2 (index 1): 145 days 00:00:00
Difference Car 3 (index 2): 127 days 00:00:00
วิธีที่ดีกว่า: Vectorized Operations
แทนที่จะเข้าถึงทีละ index ให้คำนวณทั้งคอลัมน์พร้อมกัน:
# คำนวณ diff ทุกแถว
dataFrame['Days_Between'] = (dataFrame['Date_of_Service'] - dataFrame['Date_of_Purchase']).dt.days
print(dataFrame[['Car', 'Days_Between']])
# Car Days_Between
# 0 Audi 148
# 1 Lexus 145
# 2 Tesla 127
# 3 Mercedes 153
# 4 BMW 153
การเข้าถึง Index ที่ถูกต้อง
df['col'][0]– ช้า (chained indexing) อาจได้ SettingWithCopyWarningdf.loc[0, 'col']– เร็วและชัดเจน (label-based)df.iloc[0]['col']หรือdf.iloc[0, col_idx]– position-based
Absolute Difference
# ใช้ abs() บน Timedelta
diff = (df['Date_of_Service'] - df['Date_of_Purchase']).abs()
# หรือ
diff = df['Date_of_Service'].sub(df['Date_of_Purchase']).abs()