반응형
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
반응형
'파이썬완전정복-Pandas DataFrame > 03. 함수의 적용' 카테고리의 다른 글
Pandas DataFrame 03-05. 함수연속적용_요소별 (transform) (0) | 2022.01.10 |
---|---|
Pandas DataFrame 03-04. 함수연속적용_축별 (aggregate, agg) (0) | 2022.01.10 |
Pandas DataFrame 03-03. 함수내 함수 연속적용 (pipe) (0) | 2022.01.10 |
Pandas DataFrame 03-02. 요소별 (applymap) (0) | 2022.01.10 |
Pandas DataFrame 03-01. 축 기준 (apply) (0) | 2022.01.10 |