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

Python – วิธีตรวจสอบวันที่หายไปใน Pandas


ในการตรวจสอบวันที่ที่หายไป อันดับแรก ให้เราตั้งค่าพจนานุกรมของรายการพร้อมบันทึกวันที่ เช่น วันที่ซื้อในตัวอย่างของเรา -

# dictionary of lists
d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
   'Date_of_purchase': ['2020-10-10', '2020-10-12', '2020-10-17', '2020-10-16', '2020-10-19', '2020-10-22']}

ตอนนี้สร้าง dataframe จากพจนานุกรมรายการด้านบน -

dataFrame = pd.DataFrame(d)

ต่อไป ตั้งเป็นดัชนี −

dataFrame = dataFrame.set_index('Date_of_purchase')

ใช้ to_datetime() เพื่อแปลงสตริงเป็นวัตถุ DateTime -

dataFrame.index = pd.to_datetime(dataFrame.index)

แสดงวันที่ที่เหลืออยู่ในช่วง -

k = pd.date_range( start="2020-10-10", end="2020-10-22").difference(dataFrame.index);

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

import pandas as pd

# dictionary of lists
d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
   'Date_of_purchase': ['2020-10-10', '2020-10-12', '2020-10-17', '2020-10-16', '2020-10-19', '2020-10-22'] }

# creating dataframe from the above dictionary of lists
dataFrame = pd.DataFrame(d)
print"DataFrame...\n",dataFrame

# Date_of_purchase set as index
dataFrame = dataFrame.set_index('Date_of_purchase')

# using to_datetime() to convert string to DateTime object
dataFrame.index = pd.to_datetime(dataFrame.index)

# remaining dates displayed as output
print("\nDisplaying remaining dates from a range of dates...")
k = pd.date_range(start="2020-10-10", end="2020-10-22").difference(dataFrame.index);

print(k);

ผลลัพธ์

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

DataFrame...
         Car    Date_of_purchase
0       BMW           2020-10-10
1     Lexus           2020-10-12
2      Audi           2020-10-17
3  Mercedes           2020-10-16
4    Jaguar           2020-10-19
5   Bentley           2020-10-22

Displaying remaining dates from a range of dates...
DatetimeIndex(['2020-10-11', '2020-10-13', '2020-10-14', '2020-10-15',
   '2020-10-18', '2020-10-20', '2020-10-21'],
   dtype='datetime64[ns]', freq=None)