query查询
DataFrame.query(expr, inplace=False, **kwargs)
用于通过boolean表达式来查询dataframe中的列。
主要参数为expr,它是字符串表达式,有如下说明:
可以引用变量,方法是在变量前添加一个@字符,例如@a + b。
可以在反引号内将包含空格或运算符的列名引用起来。 这样,您还可以转义以数字开头或Python关键字的名称。 基本上是无效的Python标识符。
例如,如果有一列称为a a,而您想将其与b相加,则查询应为’a a’ + b。
Examples
df = pd.DataFrame({'A': range(1, 6),
'B': range(10, 0, -2),
'C C': range(10, 5, -1)})
df
A B C C
0 1 10 10
1 2 8 9
2 3 6 8
3 4 4 7
4 5 2 6
如果我要查询A列值大于B列值的结果,正常情况我们会做如下操作:
df[df.A > df.B] 或 df[df['A'] > df['B']]
A B C C
4 5 2 6
然而这不够优雅,使用query可以简化代码:
df.query('A > B ')
A B C C
4 5 2 6
用同样的方法,查询B列和C C列相等的数据:
df.query('B == 'C C'')
A B C C
0 1 10 10
注意对于C C列的列名中间有空格或运算符等其他特殊符号的情况,上文提到,要用反引号(就是键盘上第二排第一个按键,有‘~’这个符号的按键)。
上述表达式等同于:
df[df.B == df['C C']]
你以为这就完了?如果这样我也没必要写这篇博客了。
上面都是单一条件查询,若涉及多个条件查询,情况如何呢?
如我要查询A列小于B列,且A列小于C C列的数据,一般情况我们会做如下写法:
df[(df['A'] < df['B']) & (df['A'] < df['C C'])]
A B C C
0 1 10 10
1 2 8 9
2 3 6 8
用query方法简洁如下:
df.query('A < B & A < `C C`')
A B C C
0 1 10 10
1 2 8 9
2 3 6 8
再比如,我要查询A列小于B列,加上A列值为4的数据,query方法如下:
df.query('A < B | A == 4')
A B C C
0 1 10 10
1 2 8 9
2 3 6 8
3 4 4 7
————————————————
版权声明:本文为CSDN博主「么心learning」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/opp003/article/details/111401155
查询A列等于值a的b列对应行的内容
import pandas as pd
data = {
"aa":['c','h','e'],
"bb":[4,5,6],
"cc":[7,8,9]
}
df = pd.DataFrame(data)
print(df)
# 找到aa列中e值对应的cc列的值
find_data = df[df['aa']=='e']['cc']
print('seeking')
print(find_data)