Pandas에서 표현식을 어떻게 동적으로 평가할 수 있나요?

Patricia Arquette
풀어 주다: 2024-11-15 10:07:02
원래의
384명이 탐색했습니다.

How Can I Dynamically Evaluate Expressions in Pandas?

Pandas를 사용하여 동적으로 표현식 평가

문제 설명

pd.eval을 사용하여 변수 대체 및 복합을 포함하여 DataFrames에서 동적 작업을 수행하려고 합니다. 산수.

풀이

1. pd.eval() 사용

# Import necessary libraries
import pandas as pd
import numpy as np

# Create sample DataFrames
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'))

# Evaluate expression using a variable
x = 5
result = pd.eval("df1.A + (df1.B * x)")

# Alternatively, assign the result to a new column
pd.eval("df2['D'] = df1.A + (df1.B * x)")
로그인 후 복사

성능 인수

다음 인수를 사용하여 pd.eval 성능을 최적화할 수 있습니다.

  • engine='numexpr': 고도로 최적화된 numexpr을 사용합니다. 엔진.
  • parser='pandas': Pandas의 연산자 우선 순위에 맞는 기본 pandas 파서를 사용합니다.
  • global_dictlocal_dict: 대체를 위한 전역 및 지역 변수 사전을 제공합니다. 이렇게 하면 전역 네임스페이스에서 변수를 정의할 필요가 없습니다.

할당 및 내부 수정

대상 인수를 사용하여 pd.eval의 결과를 DataFrame에 직접 할당할 수 있습니다. .

df3 = pd.DataFrame(columns=list('FBGH'), index=df1.index)
pd.eval("df3['B'] = df1.A + df2.A", target=df3)

# In-place modification
pd.eval("df2.B = df1.A + df2.A", target=df2, inplace=True)
로그인 후 복사

2. df.eval() 사용

# Evaluate expression in df1
result = df1.eval("A + B")

# Perform variable substitution
df1.eval("A > @x", local_dict={'x': 5})
로그인 후 복사

df.query()와의 비교

pd.eval은 표현식 평가에 적합하지만 df.query()는 조건문 평가에 더 간결하고 효율적입니다. 부울 표현식을 기반으로 DataFrame을 필터링하므로 쿼리입니다.

# Query df1
df1.query("A > B")
로그인 후 복사

위 내용은 Pandas에서 표현식을 어떻게 동적으로 평가할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿