Làm cách nào để lọc dữ liệu giữa hai ngày trong python?

Có nhiều cách khác nhau trong gấu trúc để chọn các hàng giữa hai ngày, chúng ta sẽ thảo luận về từng cách trong các phần sau

  • gấu trúc. loạt. ở giữa()
  • Lập chỉ mục Boolean
  • Truy vấn khung dữ liệu gấu trúc
  • Định vị khung dữ liệu
  • Cắt bớt khung dữ liệu

Cách chọn hàng giữa ngày?

1. Chọn hàng bằng gấu trúc. loạt. ở giữa()

Hãy tạo một khung dữ liệu có ngày làm cột và các giá trị trong phạm vi ngày từ ngày 10 tháng 9 năm 2022 đến ngày 2 tháng 10 năm 2022

df=pd.DataFrame(pd.date_range('10-sep-2022','2-oct-2022',freq='9h'),columns=['timestamp'])
df.head()

ngày02022-09-10 00. 00. 0012022-09-10 09. 00. 0022022-09-10 18. 00. 0032022-09-11 03. 00. 0042022-09-11 12. 00. 00

Chúng tôi muốn lọc các hàng trong khung dữ liệu này (df) trong đó các hàng nằm trong khoảng từ 15-SEP-2022 đến 2-OCT-2022

gấu trúc. loạt. between() trả về một vectơ boolean chứa True bất cứ nơi nào phần tử Sê-ri tương ứng nằm giữa các giá trị biên trái và phải. Giá trị NA được coi là Sai

Ghi chú. Nếu cột ngày giờ của bạn có kiểu ngày giờ Pandas (e. g.

df[df.date.between('15-sep-2022','21-sep-2022')]
0), để lọc thích hợp, bạn cần pd. Đối tượng dấu thời gian,

df[df.date.between('15-sep-2022','21-sep-2022')]

Ngoài

ngày142022-09-15 06. 00. 00152022-09-15 15. 00. 00162022-09-16 00. 00. 00172022-09-16 09. 00. 00182022-09-16 18. 00. 00192022-09-17 03. 00. 00202022-09-17 12. 00. 00212022-09-17 21. 00. 00222022-09-18 06. 00. 00232022-09-18 15. 00. 00242022-09-19 00. 00. 00252022-09-19 09. 00. 00262022-09-19 18. 00. 00272022-09-20 03. 00. 00282022-09-20 12. 00. 00292022-09-20 21. 00. 00

2. Lọc các hàng bằng Lập chỉ mục Boolean

Chúng tôi có thể sử dụng lập chỉ mục boolean để chọn các hàng giữa các ngày, bạn có thể chuyển các ngày dưới dạng

df[df.date.between('15-sep-2022','21-sep-2022')]
1,
df[df.date.between('15-sep-2022','21-sep-2022')]
2,
df[df.date.between('15-sep-2022','21-sep-2022')]
3 hoặc thậm chí
df[df.date.between('15-sep-2022','21-sep-2022')]
4

df[(df['date'] > '2022-09-15') & (df['date'] < '2022-09-21')]

Giả sử cột ngày của bạn là loại datetime64[ns] thì bạn có thể sử dụng trình truy cập dt để lọc ngày với định dạng cụ thể

________số 8

Ngoài

ngày142022-09-15 06. 00. 00152022-09-15 15. 00. 00162022-09-16 00. 00. 00172022-09-16 09. 00. 00182022-09-16 18. 00. 00192022-09-17 03. 00. 00202022-09-17 12. 00. 00212022-09-17 21. 00. 00222022-09-18 06. 00. 00232022-09-18 15. 00. 00242022-09-19 00. 00. 00252022-09-19 09. 00. 00262022-09-19 18. 00. 00272022-09-20 03. 00. 00282022-09-20 12. 00. 00292022-09-20 21. 00. 00

3. Chọn hàng bằng truy vấn Dataframe

Chúng tôi cũng có thể sử dụng truy vấn để chọn các hàng giữa các ngày

df.query('20220915 < date < 20220921')

Ngoài

ngày142022-09-15 06. 00. 00152022-09-15 15. 00. 00162022-09-16 00. 00. 00172022-09-16 09. 00. 00182022-09-16 18. 00. 00192022-09-17 03. 00. 00202022-09-17 12. 00. 00212022-09-17 21. 00. 00222022-09-18 06. 00. 00232022-09-18 15. 00. 00242022-09-19 00. 00. 00252022-09-19 09. 00. 00262022-09-19 18. 00. 00272022-09-20 03. 00. 00282022-09-20 12. 00. 00292022-09-20 21. 00. 00

Bạn cũng có thể sử dụng

df[df.date.between('15-sep-2022','21-sep-2022')]
3 để thực hiện truy vấn như bên dưới

df[df.date.between('15-sep-2022','21-sep-2022')]
1

Ngoài

ngày152022-09-15 15. 00. 00162022-09-16 00. 00. 00172022-09-16 09. 00. 00182022-09-16 18. 00. 00192022-09-17 03. 00. 00202022-09-17 12. 00. 00212022-09-17 21. 00. 00222022-09-18 06. 00. 00232022-09-18 15. 00. 00242022-09-19 00. 00. 00252022-09-19 09. 00. 00262022-09-19 18. 00. 00272022-09-20 03. 00. 00282022-09-20 12. 00. 00292022-09-20 21. 00. 00302022-09-21 06. 00. 00

4. Chọn hàng bằng loc

Đối với việc sử dụng. loc, trước tiên chúng ta cần đặt cột ngày làm chỉ mục

df[df.date.between('15-sep-2022','21-sep-2022')]
2

Sau đó sắp xếp chỉ mục

df[df.date.between('15-sep-2022','21-sep-2022')]
3

và cuối cùng chọn các hàng giữa các ngày

df[df.date.between('15-sep-2022','21-sep-2022')]
4

Ngoài

ngày2022-09-15 06. 00. 002022-09-15 15. 00. 002022-09-16 00. 00. 002022-09-16 09. 00. 002022-09-16 18. 00. 002022-09-17 03. 00. 002022-09-17 12. 00. 002022-09-17 21. 00. 002022-09-18 06. 00. 002022-09-18 15. 00. 002022-09-19 00. 00. 002022-09-19 09. 00. 002022-09-19 18. 00. 002022-09-20 03. 00. 002022-09-20 12. 00. 002022-09-20 21. 00. 00

###

5. Chọn các hàng bằng cách sử dụng cắt bớt khung dữ liệu

Nó cắt bớt một Sê-ri hoặc Khung dữ liệu trước và sau một số giá trị chỉ mục

Đây là cách viết tắt hữu ích để lập chỉ mục boolean dựa trên các giá trị chỉ mục trên hoặc dưới các ngưỡng nhất định

Bởi vì chỉ mục là Datetime Index chỉ chứa ngày tháng, nên chúng ta có thể chỉ định trước và sau dưới dạng chuỗi. Chúng sẽ bị ép buộc đối với Dấu thời gian trước khi cắt bớt

Làm cách nào để tìm sự khác biệt giữa hai ngày trong Python DataFrame?

Sử dụng df. dates1-df. dates2 để tìm sự khác biệt giữa hai ngày và sau đó chuyển đổi kết quả ở dạng tháng.

Làm thế nào để so sánh hai ngày trong gấu trúc?

Sử dụng các toán tử so sánh (như < , > , , v.v. ) để so sánh ngày tháng trong Python . Ví dụ: datetime_1 > datetime_2 để kiểm tra xem datetime_1 có lớn hơn datetime_2 không. Nếu bạn chỉ muốn so sánh ngày tháng của đối tượng DateTime, hãy sử dụng phương thức date() để chỉ trích xuất phần ngày tháng từ đối tượng datetime.