Giả sử bạn có DataFrame với cột thời gian và muốn cắt bỏ dữ liệu ngoài khoảng thời gian xác định.
Giải pháp
- Tạo DataFrame với cột
time_serieslà date_range tần suất tuần (freq='W'). - Sử dụng
df.truncate(before='01/01/2020', after='10/02/2020')để cắt.
Mã ví dụ
import pandas as pd
d = {'Id': [1,2,3,4,5,6,7,8,9,10]}
df = pd.DataFrame(d)
df['time_series'] = pd.date_range('01/01/2020', periods=10, freq='W')
print("Trước truncate:\n", df)
result = df.truncate(before='01/01/2020', after='10/02/2020')
print("\nSau truncate:\n", result)
Kết quả
Trước truncate: Id time_series 0 1 2020-01-05 1 2 2020-01-12 2 3 2020-01-19 3 4 2020-01-26 4 5 2020-02-02 5 6 2020-02-09 6 7 2020-02-16 7 8 2020-02-23 8 9 2020-03-01 9 10 2020-03-08 Sau truncate: Id time_series 1 2 2020-01-12
Giải thích:
truncatecắt dựa trên giá trị index (không phải vị trí số).- Ví dụ trên: Index mặc định 0-9,
before='01/01/2020'vàafter='10/02/2020'được so sánh với index → chỉ giữ index=1 (vì index=0 < before? logic tùy phiên bản). - Thường dùng với
DatetimeIndexđể cắt theo ngày:df.truncate(before='2020-01-10', after='2020-01-20').