다음과 같은 데이터 프레임이 있습니다.
column1 column2 column3
ram tall good
rohan short fine
ajay tall best
alia tall good
aman medium fine
john short good
jack short fine
이제 다음과 같은 출력이 필요합니다.
컬럼 1->를 기준으로 키가 크고, 짧고, 중간 인 상품의 고유 개수
tall=2 , short=1 , medium=0
column1->를 기준으로 키가 크고, 짧고, 중간 인 벌금의 고유 개수
tall=0 , short=2 , medium=1
column1->를 기준으로 톨, 숏, 미디엄에서 베스트의 고유 카운트
tall=1 , short=0 , medium=0
저는 판다 초보자입니다. 미리 감사드립니다
사용 value_counts + 언 스택
res = df[['column3', 'column2']].value_counts().unstack('column2', fill_value=0)
print(res)
산출
column2 medium short tall
column3
best 0 0 1
fine 1 2 0
good 0 1 2
대체 groupby + unstack :
res = df.groupby(['column3', 'column2']).count().unstack('column2', fill_value=0)
print(res)
출력 (그룹 별)
column1
column2 medium short tall
column3
best 0 0 1
fine 1 2 0
good 0 1 2
두 접근 방식의 기본 개념은 인덱스 를 생성 한 다음 스택 해제하는 것입니다. 질문에 지정한 것과 동일한 순서를 일치 시키려면 먼저 범주 형으로 변환하십시오.
df['column2'] = pd.Categorical(df['column2'], categories=['tall', 'short', 'medium'], ordered=True)
res = df[['column3', 'column2']].value_counts().unstack('column2', fill_value=0)
print(res)
산출
column2 tall short medium
column3
best 1 0 0
fine 0 2 1
good 2 1 0
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다