query查询

  1. DataFrame.query(expr, inplace=False, **kwargs)

用于通过boolean表达式来查询dataframe中的列。
主要参数为expr,它是字符串表达式,有如下说明:
可以引用变量,方法是在变量前添加一个@字符,例如@a + b。
可以在反引号内将包含空格或运算符的列名引用起来。 这样,您还可以转义以数字开头或Python关键字的名称。 基本上是无效的Python标识符。

例如,如果有一列称为a a,而您想将其与b相加,则查询应为’a a’ + b。
Examples

  1. df = pd.DataFrame({'A': range(1, 6),
  2. 'B': range(10, 0, -2),
  3. 'C C': range(10, 5, -1)})
  4. df
  5. A B C C
  6. 0 1 10 10
  7. 1 2 8 9
  8. 2 3 6 8
  9. 3 4 4 7
  10. 4 5 2 6

如果我要查询A列值大于B列值的结果,正常情况我们会做如下操作:

  1. df[df.A > df.B] df[df['A'] > df['B']]
  2. A B C C
  3. 4 5 2 6

然而这不够优雅,使用query可以简化代码:

  1. df.query('A > B ')
  2. A B C C
  3. 4 5 2 6

用同样的方法,查询B列和C C列相等的数据:

  1. df.query('B == 'C C'')
  2. A B C C
  3. 0 1 10 10

注意对于C C列的列名中间有空格或运算符等其他特殊符号的情况,上文提到,要用反引号(就是键盘上第二排第一个按键,有‘~’这个符号的按键)。
上述表达式等同于:

  1. df[df.B == df['C C']]

你以为这就完了?如果这样我也没必要写这篇博客了。
上面都是单一条件查询,若涉及多个条件查询,情况如何呢?
如我要查询A列小于B列,且A列小于C C列的数据,一般情况我们会做如下写法:

  1. df[(df['A'] < df['B']) & (df['A'] < df['C C'])]
  2. A B C C
  3. 0 1 10 10
  4. 1 2 8 9
  5. 2 3 6 8

用query方法简洁如下:

  1. df.query('A < B & A < `C C`')
  2. A B C C
  3. 0 1 10 10
  4. 1 2 8 9
  5. 2 3 6 8

再比如,我要查询A列小于B列,加上A列值为4的数据,query方法如下:

  1. df.query('A < B | A == 4')
  2. A B C C
  3. 0 1 10 10
  4. 1 2 8 9
  5. 2 3 6 8
  6. 3 4 4 7

————————————————
版权声明:本文为CSDN博主「么心learning」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/opp003/article/details/111401155

查询A列等于值a的b列对应行的内容

  1. import pandas as pd
  2. data = {
  3. "aa":['c','h','e'],
  4. "bb":[4,5,6],
  5. "cc":[7,8,9]
  6. }
  7. df = pd.DataFrame(data)
  8. print(df)
  9. # 找到aa列中e值对应的cc列的值
  10. find_data = df[df['aa']=='e']['cc']
  11. print('seeking')
  12. print(find_data)

image.png