본문 바로가기

Code Snippets/Pandas

[Pandas] 특정 조건을 만족하는 행 서식 변경

Pandas에서는 Styler Object가 있다.

 

기존의 dataframe을 기반으로 만들어진 HTML Table인데,

Caption을 달거나 cell 색을 변경하는 등 각종 꾸미기가 가능하다.

 

구체적인 내용은 아래 링크를 참고하면된다 (https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html)

 

아래 처럼 특정 조건을 만족하는 행에 대해서, 열의 일부에 대한 서식만 바꾸는 것은 아래 코드를 이용해서 가능하다.

 

# 조건 1) 데이터 중 콜행사가가 현재 코스피200 지수와의 차이가 가장 작은 행을 선택
highlight_c = lambda x : ['color:red' if abs(x['콜_행사가'] - kospi200) == abs(newdf['콜_행사가'] - kospi200).min() else "" for i in x ]

# 조건 2) 데이터 중 풋 행사가가 현재 코스피200 지수와의 차이가 가장 작은 행을 선택

highlight_p = lambda x : ['color:red' if abs(x['풋_행사가'] - kospi200) == abs(newdf['풋_행사가'] - kospi200).min() else "" for i in x ]

# 조건 1은 콜_행사가, 콜_수량합계 열에, 조건 2는 풋_행사가, 풋_수량합계 열에 적용 
mystyler = newdf.style.apply(highlight_c,subset=['콜_행사가','콜_수량합계'],axis=1).apply(highlight_p,subset=['풋_행사가','풋_수량합계'],axis=1)


# 기타 formatting (소수점 자리수 조정 및 index 가리기)
mystyler = mystyler.format({'콜_행사가': "{:,.1f}",'콜_수량합계': "{:,.0f}",'풋_행사가': "{:,.1f}",'풋_수량합계': "{:,.0f}"}).hide_index()