반응형

03-06. 문자열 형식의 계산식 적용 (eval)


DataFrame.eval(expr, inplace=False, kwargs)

 

개요


eval메서드는 파이썬의 eval 메서드와 사용목적이 동일합니다. 문자열로 된 계산식을 적용합니다.

 

사용법


기본 사용법
df.eval(expr, inplace=False, kwargs)
expr : 문자열 형태의 계산식입니다.
inplace : {True / False} 계산된 값이 원본을 변경할지의 여부입니다. 기본적으로 원본은 변경되지 않습니다.

반응형

 

예시


먼저 기본적인 3x3 DataFrame을 만들어보겠습니다.

data = [[1,2,3],[4,5,6],[7,8,9]]
col = ['col1','col2','col3']
row = ['row1','row2','row3']
df = pd.DataFrame(data = data, index = row, columns= col)
print(df)
>>
      col1  col2  col3
row1     1     2     3
row2     4     5     6
row3     7     8     9

기본적인 사용법
col1*col2-col3의 값을 갖는 col4를 만들어보겠습니다. 'col4'='col1'+'col2'-'col3'를 문자열 그대로 사용합니다.
계산이 적용된 col4열이 생성된 것을 확인할 수 있습니다.

print(df.eval('col4=col1*col2-col3'))
>>
      col1  col2  col3  col4
row1     1     2     3    -1
row2     4     5     6    14
row3     7     8     9    47

하지만 inplace인수가 기본값인 False이기 때문에 원본은 변경되지 않은것을 알 수 있습니다.

print(df)
>>
      col1  col2  col3
row1     1     2     3
row2     4     5     6
row3     7     8     9


inplace = True인 경우
Inplace = True로 할 경우 원본이 변경되는것을 확인할 수 있습니다.
inplace = True로 할경우 사본이 생성되지 않기 때문에 print할 경우 None이 출력됩니다.

print(df.eval('col4=col1*col2-col3',inplace=True))
>>
None

하지만 원본은 변경되어있는것을 확인할 수 있습니다.

print(df)
>>
      col1  col2  col3  col4
row1     1     2     3    -1
row2     4     5     6    14
row3     7     8     9    47
반응형

+ 최근 글