이런 종류의 데이터가 있다고 가정 해 봅시다. 일부 제품에 대한 리뷰 모음입니다.
prod_id text rating
AB123 some text 5
AB123 some text 2
AB123 some text 4
AC456 some text 3
AC456 some text 2
AD777 some text 2
AD777 some text 5
AD777 some text 5
AD777 some text 4
AE999 some text 4
AF000 some text 5
AG222 some text 5
AG222 some text 3
AG222 some text 3
가장 많은 리뷰 (가장 많은 행)가있는 제품을 알고 싶으므로 다음 코드를 사용하여 상위 3 개 제품을 가져옵니다 (가장 많이 리뷰 된 제품 3 개만 필요).
s = df['prod_id'].value_counts().sort_values(ascending=False).head(3)
그리고이 결과를 얻을 것입니다.
AD777 4
AB123 3
AG222 3
하지만 실제로 필요한 것은 위와 같은 ID가있는 행입니다. 아래와 같이 모든 AD777, AB123 및 AG222의 전체 행이 필요합니다.
product_id text rating
AD777 some text 2
AD777 some text 5
AD777 some text 5
AD777 some text 4
AB123 some text 5
AB123 some text 2
AB123 some text 4
AG222 some text 5
AG222 some text 3
AG222 some text 3
어떻게하나요? 나는을 시도 print(df.iloc[s])
했지만 물론 작동하지 않습니다. 문서를 읽었을 때 value_counts
데이터 프레임이 아닌 시리즈를 반환하십시오. 어떤 생각? 감사
난 당신이 필요하다고 생각 merge
과 left
함께 참여 DataFrame
하여 만든 index
의 s
:
df = pd.DataFrame({'prod_id':s.index}).merge(df, how='left')
print (df)
prod_id text rating
0 AD777 some text 2
1 AD777 some text 5
2 AD777 some text 5
3 AD777 some text 4
4 AB123 some text 5
5 AB123 some text 2
6 AB123 some text 4
7 AG222 some text 5
8 AG222 some text 3
9 AG222 some text 3
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다