Pandas 使用函数方法筛选数据

  • Post author:
  • Post category:其他


一、查询函数: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 版权协议,转载请附上原文出处链接和本声明。