>백엔드 개발 >파이썬 튜토리얼 >pd.eval을 사용하여 Pandas의 수식에서 표현식을 동적으로 평가하는 방법은 무엇입니까?

pd.eval을 사용하여 Pandas의 수식에서 표현식을 동적으로 평가하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-25 02:31:13791검색

How to Dynamically Evaluate Expressions from Formulas in Pandas using pd.eval?

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

pd.eval을 사용하여 하나 이상의 데이터 프레임 열에 대한 산술 표현식을 평가하는 것은 특히 자동화할 때 일반적인 작업입니다. 워크플로우. 다음 코드 조각을 고려하세요.

`x = 5
df2['D'] = df1['A'] (df1['B'] * x)``

이 코드는 df1의 열 A와 B에 대한 연산을 수행하고 그 결과에 변수 x를 곱하여 df2에 새 열 D를 추가합니다. 목표는 표현식을 문자열로 실행하는 pd.eval의 기능을 활용하여 이 데이터 조작을 동적으로 반복하는 것입니다.

먼저 입력 DataFrames를 소개하겠습니다.

import pandas as pd
import numpy as np

np.random.seed(0)
df1 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))
df2 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))

df1

   A  B  C  D
0  5  0  3  3
1  7  9  3  5
2  2  4  7  6
3  8  8  1  6
4  7  7  8  1

df2

   A  B  C  D
0  5  9  8  9
1  4  3  0  3
2  5  0  2  3
3  8  1  3  3
4  3  7  0  1

다음을 사용하여 표현식을 동적으로 평가합니다. pd.eval, 다음 코드를 사용할 수 있습니다:

result = pd.eval('df1.A (df1.B * x)')

이 코드 줄은 평가된 표현식이 포함된 result라는 새 DataFrame을 생성합니다. eval 함수를 사용하여 다음과 같은 조건부 평가를 수행할 수도 있습니다.

pd.eval('df1.A > df2.A')

식 결과를 다시 할당하려면 df2에 다음 구문을 사용합니다:

df2['D'] = pd.eval('df1.A (df1.B * x)', target=df2)

표현식 문자열 내에서 인수를 전달하려면 @ 기호를 사용하세요.

pd.eval('df1.A (df1. B * @x)', local_dict={'x': 5})

성능을 극대화하려면 다음을 고려하세요. 인수:

parser='python'은 구문 규칙을 제어하고 Python의 연산자 우선 순위와의 일관성을 보장합니다.
engine='numexpr'은 최적화된 numexpr 백엔드를 사용하여 더 빠르게 평가할 수 있습니다.
이는 다음을 제공해야 합니다. pd.eval을 사용하여 Pandas의 수식에서 표현식을 동적으로 평가하는 방법을 포괄적으로 이해합니다.

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

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