Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cắt ngắn (truncate) DataFrame time series theo index Python

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_series là 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:

  • truncate cắ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').