一、查询函数:dataframe.query()
df.query(表达式) 使用布尔表达式查询dataframe的列,表达式是一个字符串,相当于sql语句的where从句,很是灵活。
1、查询三列相等的数据
"""查询SD1 等于 SD7 等于 SD8 的数据"""
dataframe.query('SD1 == SD7 == SD8')
"""
SD1 SD2 SD3 SD4 SD5 SD6 SD7 SD8
1 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4
12 5 5 5 5 5 6 5 5
13 4 4 4 4 4 4 4 4
15 7 7 7 7 7 7 7 7
... ... ... ... ... ... ... ... ...
237 4 3 4 4 4 4 4 4
241 3 3 1 1 1 2 3 3
242 6 7 7 6 6 6 6 6
244 3 3 3 4 4 3 3 3
254 1 7 7 7 1 1 1 1
"""
2、查询一列大于另一列的数据
"""查询 SD7 大于 SD8 的数据"""
dataframe.query('SD7 > SD8')
"""
SD1 SD2 SD3 SD4 SD5 SD6 SD7 SD8
0 4 7 2 1 2 6 7 6
6 5 6 4 5 2 3 6 3
7 1 6 5 1 2 3 6 4
8 6 3 6 6 6 2 4 2
11 5 6 5 5 5 4 5 2
... ... ... ... ... ... ... ... ...
253 1 4 3 3 2 3 2 1
257 1 3 5 2 5 5 4 2
258 1 5 2 1 1 7 7 6
259 1 7 7 4 2 1 7 1
261 1 3 5 5 5 5 3 2
"""
3、查询两列的和小于某个数值的数据
# 查询 SD4 + SD5 < SD7 的数据
dataframe.query('SD4 + SD5 < SD7')
"""
SD1 SD2 SD3 SD4 SD5 SD6 SD7 SD8
0 4 7 2 1 2 6 7 6
2 1 7 1 1 1 6 6 6
5 3 7 4 2 2 7 7 7
7 1 6 5 1 2 3 6 4
9 3 4 3 2 1 3 7 7
... ... ... ... ... ... ... ... ...
249 1 4 4 2 2 2 6 4
250 1 4 3 1 1 5 5 2
252 1 6 2 2 2 5 7 5
258 1 5 2 1 1 7 7 6
259 1 7 7 4 2 1 7 1
"""
4、使用与的方法查询数据
# 查询 SD4 > 3 and SD5 >3 and SD7 < 3 的数据
dataframe.query('SD4 > 3 & SD5 >3 and SD7 < 3')
"""
SD1 SD2 SD3 SD4 SD5 SD6 SD7 SD8
25 4 4 4 4 4 4 2 3
152 3 5 5 5 4 3 2 3
220 7 2 7 6 6 1 2 1
256 1 7 3 7 7 4 2 3
"""
5、列名有空格的需要用反引号引起来
dataframe.query('B == `team nmae`')
6、变量符号引入
a = dataframe.SD1.mean()
dataframe.query('SD1 > @a+2')
二、过滤函数:dataframe.filter()
df.filter()可以队列名和行名进行筛选,支持模糊匹配。正则表达式。
df.filter(items=['SD1', 'SD2']) # 选择两列
df.filter(regex='S', axis=1) # 列名包含S的列
df.filter(regex='e$', axis=1) # 以e结尾的列
df.filter(regex='1$', axis=0) # 正则,索引名以1结尾
df.filter(like='2', axis=0) # 索引中有2的
# 索引中以2开头、列名有Q的
df.filter(regex='^2', axis=0).filter(like='Q', axis=1)
版权声明:本文为qq_42336581原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。