>  기사  >  백엔드 개발  >  한 기사에서 Python에서 query()를 사용하여 우아한 쿼리를 수행하는 방법을 알아보세요.

한 기사에서 Python에서 query()를 사용하여 우아한 쿼리를 수행하는 방법을 알아보세요.

青灯夜游
青灯夜游앞으로
2022-02-03 09:00:299520검색

이 글에서는 Python Pandas 라이브러리를 사용하는 방법에 대해 설명하고 query()를 사용한 우아한 쿼리 방법을 소개하겠습니다. 모두에게 도움이 되기를 바랍니다.

한 기사에서 Python에서 query()를 사용하여 우아한 쿼리를 수행하는 방법을 알아보세요.

Pandas가 조건에 따라 특정 데이터를 얻기 위해서는 누구나 쉽게 해당 코드를 작성할 수 있다고 생각하지만 쿼리를 사용해 본 적이 없다면 그 단순함에 감동받을 것이라고 믿습니다!

일반 사용법

먼저 DataFrame을 생성하세요.

import pandas as pd

df = pd.DataFrame(
    {'A': ['e', 'd', 'c', 'b', 'a'],
     'B': ['f', 'b', 'c', 'd', 'e'],
     'C': range(0, 10, 2),
     'D': range(10, 0, -2),
     'E.E': range(10, 5, -1)})

이제 A열의 문자가 B열에 나타나는 모든 행을 선택합니다. 먼저 두 가지 일반적인 글쓰기 방법을 살펴보겠습니다.

>>> df[df['A'].isin(df['B'])]
   A  B  C   D  E.E
0  e  f  0  10   10
1  d  b  2   8    9
2  c  c  4   6    8
3  b  d  6   4    7
>>> df.loc[df['A'].isin(df['B'])]
   A  B  C   D  E.E
0  e  f  0  10   10
1  d  b  2   8    9
2  c  c  4   6    8
3  b  d  6   4    7

아래 query()를 사용하여 구현하세요. query() 来实现。

>>> df.query("A in B")
   A  B  C   D  E.E
0  e  f  0  10   10
1  d  b  2   8    9
2  c  c  4   6    8
3  b  d  6   4    7

可以看到使用 query 后的代码简洁易懂,并且它对于内存的消耗也更小。

多条件查询

选取 A列字母出现在B列,并且C列小于D列 的所有行。

>>> df.query('A in B and C < D')
   A  B  C   D  E.E
0  e  f  0  10   10
1  d  b  2   8    9
2  c  c  4   6    8

这里 and 也可以用 & 表示。

引用变量

表达式中也可以使用外部定义的变量,在变量名前用@标明。

>>> number = 5
>>> df.query('A in B & C > @number')
   A  B  C  D  E.E
3  b  d  6  4    7

索引选取

选取 A列字母出现在B列,并且索引大于2 的所有行。

>>> df.query('A in B and index > 2')
   A  B  C  D  E.E
3  b  d  6  4    7

多索引选取

创建一个两层索引的 DataFrame。

>>> import numpy as np
>>> colors = ['yellow']*3 + ['red']*2
>>> rank = [str(i) for i in range(5)]
>>> index = pd.MultiIndex.from_arrays([colors, rank], names=['color', 'rank'])
>>> df = pd.DataFrame(np.arange(10).reshape(5, 2),columns=['A', 'B'] , index=index)
>>> df = pd.DataFrame(np.arange(10).reshape(5, 2),columns=['A', 'B'] , index=index)
>>> df
             A  B
color  rank      
yellow 0     0  1
       1     2  3
       2     4  5
red    3     6  7
       4     8  9

1、当有多层索引有名称时,通过索引名称直接选取。

>>> df.query("color == 'red'")
            A  B
color rank      
red   3     6  7
      4     8  9

2、当有多层索引无名时,通过索引级别来选取。

>>> df.index.names = [None, None]
>>> df.query("ilevel_0 == 'red'")
       A  B
red 3  6  7
    4  8  9
>>> df.query("ilevel_1 == '4'")
       A  B
red 4  8  9

特殊字符

对于列名中间有空格或运算符等其他特殊符号,需要使用反引号 ``

>>> df.query('A == B | (C + 2 > `E.E`)')
   A  B  C  D  E.E
2  c  c  4  6    8
3  b  d  6  4    7
4  a  e  8  2    6

query를 사용한 후의 코드가 간결하고 이해하기 쉬우며, 메모리 소모도 적은 것을 확인할 수 있습니다.

다중 조건 쿼리

선택 🎜A열의 문자가 B열에 나타나고 C열이 D열보다 작은 모든 행 선택 🎜. 🎜rrreee🎜여기서 and&로도 표현할 수 있습니다. 🎜🎜🎜참조 변수🎜🎜🎜외부 정의 변수는 변수 이름 앞에 @를 표시하여 표현식에서도 사용할 수 있습니다. 🎜rrreee🎜🎜색인 선택🎜🎜🎜Select 🎜A열의 문자가 B열에 나타나고 색인이 2🎜보다 큰 모든 행을 선택하세요. 🎜rrreee🎜🎜다중 인덱스 선택🎜🎜🎜두 가지 수준의 인덱스가 있는 DataFrame을 만듭니다. 🎜rrreee🎜1. 이름이 있는 색인이 여러 개 있을 경우 색인 이름으로 직접 선택하세요. 🎜rrreee🎜2. 이름 없는 인덱스가 여러 개 있을 경우 인덱스 수준별로 선택하세요. 🎜rrreee🎜🎜특수 문자🎜🎜🎜열 이름에 공백이나 연산자와 같은 기타 특수 기호가 중간에 있는 경우 백틱을 사용해야 합니다. ``. 🎜rrreee🎜일반적으로 query()의 사용법은 비교적 간단하여 빠르게 시작할 수 있고, 코드의 가독성도 많이 향상되었습니다. 🎜🎜【관련 추천: 🎜Python3 비디오 튜토리얼🎜】🎜

위 내용은 한 기사에서 Python에서 query()를 사용하여 우아한 쿼리를 수행하는 방법을 알아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제