Tìm các ngày bị thiếu trong một dãy ngày liên tục. Sử dụng pd.date_range() tạo dãy ngày đầy đủ, sau đó difference() với index của DataFrame.
Tạo DataFrame
import pandas as pd
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 = pd.DataFrame(d)
print("DataFrame gốc:\n", dataFrame)
Tìm ngày thiếu
# Đặt cột ngày làm index
dataFrame = dataFrame.set_index('Date_of_purchase')
# Chuyển index sang datetime
dataFrame.index = pd.to_datetime(dataFrame.index)
# Tạo dãy ngày đầy đủ từ 10/10 đến 22/10
full_range = pd.date_range(start="2020-10-10", end="2020-10-22")
# Tìm ngày không có trong index
missing_dates = full_range.difference(dataFrame.index)
print("\nCác ngày bị thiếu:")
print(missing_dates)
Kết quả
DataFrame gốc...
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
Các ngày bị thiếu:
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)
Giải thích
set_index('Date_of_purchase')đưa cột ngày làm index.pd.to_datetime()chuyển chuỗi sang Timestamp để so sánh chính xác.pd.date_range(start, end)tạo dãy ngày liên tục (mặc định freq='D').difference()trả về các ngày có trong dãy đầy đủ nhưng không có trong index DataFrame.
Ứng dụng: kiểm tra tính liên tục của dữ liệu chuỗi thời gian, phát hiện lỗi thu thập dữ liệu.