pandas中query函数可以实现数据的查找功能,类似于数据库的select功能。
实例说明
>>> import pandas as pd
# 导入上图中的数据
>>> df = pd.read_excel(r'resample_data.xlsx')
# 查询2022-05-20到2022-05-25之间的数据
>>> df.query('"2022-05-20" <= date < "2022-05-25"')
date open high weekday
26 2022-05-20 8825.58 8976.35 4
27 2022-05-23 8985.73 9005.87 0
28 2022-05-24 8978.07 8978.10 1
# 多条件AND查询,用 & 连接
>>> df.query('"2022-05-20" <= date < "2022-05-25" & open > 8900')
date open high weekday
27 2022-05-23 8985.73 9005.87 0
28 2022-05-24 8978.07 8978.10 1
# 多条件OR查询,用 | 连接
# 可以加括号,消除符号优先级的影响
>>> df.query('("2022-05-20" <= date < "2022-05-25") | open > 9600')
date open high weekday
0 2022-04-11 9620.50 9644.11 0
2 2022-04-13 9615.72 9616.23 2
26 2022-05-20 8825.58 8976.35 4
27 2022-05-23 8985.73 9005.87 0
28 2022-05-24 8978.07 8978.10 1
# 引入外部变量
>>> query_list = [1, 2, 3]
>>> df.query('weekday not in @query_list')
date open high weekday
0 2022-04-11 9620.50 9644.11 0
4 2022-04-15 9460.91 9643.38 4
5 2022-04-18 9473.89 9508.39 0
9 2022-04-22 8839.38 8920.13 4
10 2022-04-25 8707.82 8728.92 0
14 2022-04-29 8461.67 8750.18 4
16 2022-05-06 8650.90 8838.78 4
17 2022-05-09 8761.02 8851.00 0
21 2022-05-13 9158.55 9211.67 4
22 2022-05-16 9159.94 9172.02 0
26 2022-05-20 8825.58 8976.35 4
27 2022-05-23 8985.73 9005.87 0