Pandas를 사용하여 수식에서 표현식을 동적으로 평가
문제:
다음을 사용하여 산술 표현식을 평가합니다. pd.eval 변수, 연산자 우선 순위 및 데이터프레임의 복잡한 구조.
답변:
1. pd.eval 사용
pd.eval(
"df1.A + (df1.B * x)",
local_dict={"x": 5},
target=df2,
parser="python",
engine="numexpr",
)
로그인 후 복사
인수:
-
표현식: 문자열로 평가할 수식.
-
local_dict: 변수가 포함된 사전 전역 네임스페이스에 정의되지 않았습니다.
-
target: 결과를 할당할 데이터 프레임입니다.
-
parser: 표현식(pandas 또는 python).
-
engine: 다음 작업에 사용되는 백엔드를 지정합니다. 표현식을 평가합니다(numexpr 또는 python).
2. df.eval 사용
df1.eval(
"A + (B * @x)",
target=df2,
parser="python",
engine="numexpr",
)
로그인 후 복사
인수:
- df: 표현식이 평가되는 데이터 프레임.
- expression: 문자열로 평가할 수식.
- target: 평가할 데이터 프레임 결과를 할당합니다.
- parser: 표현식을 구문 분석하는 데 사용되는 파서를 지정합니다(pandas 또는 python).
- engine: 표현식을 평가하는 데 사용되는 백엔드를 지정합니다(numexpr 또는 python).
3. pd.eval과 df.eval의 차이점
- pd.eval은 모든 객체에 대한 표현식을 평가하는 반면, df.eval은 특히 데이터 프레임에 대한 표현식을 평가합니다.
- df.eval에는 혼동을 피하기 위해 열 이름 앞에 at 기호(@)를 붙이는 반면, pd.eval은 그렇지 않습니다.
- df.eval은 pd.eval은 할당으로 여러 줄 표현식을 처리할 수 없지만 pd.eval은 처리할 수 없습니다.
추가 참고 사항:
- 표현식을 큰따옴표로 묶어야 합니다.
- x = 5는 전역 변수 x에 값 5를 할당합니다. 네임스페이스.
- parser='python'은 Python의 연산자 우선 순위 규칙과 복잡한 표현식을 처리할 때 권장됩니다.
- target=df2는 결과가 지정된 데이터 프레임에 할당되도록 합니다.
- engine='numexpr'은 성능 향상을 위해 최적화된 numexpr 엔진을 활용합니다.
- inplace=True를 사용할 수 있습니다. 원본 데이터프레임을 수정합니다.
- df.query는 지정된 기준을 충족하는 행을 반환하는 조건식에도 사용할 수 있습니다.
위 내용은 Pandas DataFrames 내에서 산술 표현식을 어떻게 동적으로 평가할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!