>  기사  >  백엔드 개발  >  pd.eval(), DataFrame.eval() 및 DataFrame.query()를 사용하여 Pandas에서 표현식을 동적으로 평가하는 방법은 무엇입니까?

pd.eval(), DataFrame.eval() 및 DataFrame.query()를 사용하여 Pandas에서 표현식을 동적으로 평가하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-20 04:14:02643검색

How to Dynamically Evaluate Expressions in Pandas Using pd.eval(), DataFrame.eval(), and DataFrame.query()?

Pandas의 수식에서 표현식을 동적으로 평가

Pandas에는 수식에서 표현식을 동적으로 평가하는 여러 가지 방법이 있습니다.

1. pd.eval()

이 함수는 문자열을 입력으로 사용하여 산술 표현식을 평가합니다. 수학 연산, 논리 연산자 및 조건문을 지원합니다. 다음과 같이 사용하실 수 있습니다:

expression = "df1['A'] + (df1['B'] * x)"
pd.eval(expression)

2. DataFrame.eval()

pd.eval()과 유사한 이 메서드는 DataFrame 내의 표현식을 평가합니다. "df1"을 지정하지 않고 열에 액세스하는 편리한 방법을 제공합니다. 접두어.

df1.eval("A + (B * x)")

3. DataFrame.query()

이 함수는 조건식을 평가하고 부울 마스크를 반환합니다. 그런 다음 마스크를 사용하여 DataFrame을 필터링할 수 있습니다.

condition = "A >= B"
df1.query(condition)

특정 질문에 대한 답변:

  1. 최적 성능: 사용 "numexpr" 백엔드를 사용하는 pd.eval() 또는 DataFrame.eval(). "python" 백엔드는 성능 이점을 제공하지 않으며 보안 위험이 있습니다.
  2. 결과 할당: "target="을 사용하여 표현식의 결과를 다시 DataFrame에 할당할 수 있습니다. 인수.

    df2 = pd.DataFrame()
    pd.eval("df2['D'] = df1['A'] + (df1['B'] * x)", target=df2)
  3. 합격 인수: "@" 기호를 사용하여 표현식 내에서 인수를 변수로 전달할 수 있습니다.

    expression = "df1['A'] + (@x * df1['B'])"
    pd.eval(expression, local_dict={"x": 5})

추가 고려 사항:

  • 필요와 표현 유형에 따라 적절한 방법을 선택하세요. 평가.
  • 필요한 경우 연산자 우선순위에 괄호를 사용하세요.
  • "resolvers=" 인수를 사용하면 표현식에 사용할 사용자 정의 함수나 변수를 제공할 수 있습니다.
  • 여러 줄 표현식 및 할당을 사용하려면 DataFrame.eval()을 사용하세요. query()는 한 줄 조건만 허용하기 때문입니다.

위 내용은 pd.eval(), DataFrame.eval() 및 DataFrame.query()를 사용하여 Pandas에서 표현식을 동적으로 평가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.