다음이 있습니다 DataFrame
.
KPI_01 KPI_02 KPI_03
date
2015-05-24 green green red
2015-06-24 orange red NaN
그리고 다음을 얻기 위해 각 날짜의 색상 수를 세고 싶습니다.
value green orange red
date
2015-05-24 2 0 1
2015-06-24 0 1 1
다음은 작업을 수행하는 코드입니다. 더 나은 방법 (짧은 방법)이 있습니까?
# Test data
df= pd.DataFrame({'date': ['05-24-2015','06-24-2015'],
'KPI_01': ['green','orange'],
'KPI_02': ['green','red'],
'KPI_03': ['red',np.nan]
})
df.set_index('date', inplace=True)
# Transforming to long format
df.reset_index(inplace=True)
long = pd.melt(df, id_vars=['date'])
# Pivoting data
pivoted = pd.pivot_table(long, index='date', columns=['value'], aggfunc='count', fill_value=0)
# Dropping unnecessary level
pivoted.columns = pivoted.columns.droplevel()
당신은 할 수 있습니다 apply
value_counts
:
>>> df.apply(pd.Series.value_counts,axis=1).fillna(0)
green orange red
date
05-24-2015 2 0 1
06-24-2015 0 1 1
apply
느린 경향이 있고 행 단위 연산도 느리지 만 솔직히 말해서 프레임이 그다지 크지 않으면 차이를 알아 차리지 못할 수도 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다