판다의 데이터 프레임별 그룹화 및 열 유지 방법
다음과 같은 일부 책의 사용을 기록하는 데이터 프레임을 고려하면 다음과 같습니다.
Name Type ID
Book1 ebook 1
Book2 paper 2
Book3 paper 3
Book1 ebook 1
Book2 paper 2
모든 책의 수를 세고 다른 칼럼들을 보관하고 이것을 가져와야 합니다.
Name Type ID Count
Book1 ebook 1 2
Book2 paper 2 2
Book3 paper 3 1
이것이 어떻게 행해지는가?
감사합니다!
원하는 것은 다음과 같습니다.
In [20]:
df.groupby(['Name','Type','ID']).count().reset_index()
Out[20]:
Name Type ID Count
0 Book1 ebook 1 2
1 Book2 paper 2 2
2 Book3 paper 3 1
사용자의 경우 '이름', '유형' 및 'ID 콜은 값이 일치하기 때문에, 우리는 이것들을 확인하고, 전화하고, 그 다음에 할 수 있습니다.
다른 접근 방식은 다음을 사용하여 '카운트' 열을 추가하는 것입니다.transform
그 다음에 전화해요.drop_duplicates
:
In [25]:
df['Count'] = df.groupby(['Name'])['ID'].transform('count')
df.drop_duplicates()
Out[25]:
Name Type ID Count
0 Book1 ebook 1 2
1 Book2 paper 2 2
2 Book3 paper 3 1
생각합니다as_index=False
속임수를 써야 합니다.
df.groupby(['Name','Type','ID'], as_index=False).count()
df에 열이 많으면 사용하는 것이 좋습니다.df.groupby(['foo']).agg(...)
, 여기를 봐요..agg()
함수를 사용하면 작업을 적용하지 않을 열에 대해 수행할 작업을 선택할 수 있습니다.만약 당신이 그것들을 보관하고 싶다면, 사용하세요..agg({'col1': 'first', 'col2': 'first', ...}
. 대신에'first'
, 신청도 가능합니다.'sum'
,'mean'
그 밖의 사람들.
사용가능value_counts()
또한:
df.value_counts().reset_index(name= 'Count')
출력:
Name Type ID Count
0 Book1 ebook 1 2
1 Book2 paper 2 2
2 Book3 paper 3 1
가장 간단한 방법
df.groupby(['col1', 'col1'], as_index=False).count()
.사용하다as_index=False
열 이름을 유지합니다.기본값은True
.
사용할 수도 있습니다.df.groupby(['col_1', 'col_2']).count().reset_index()
언급URL : https://stackoverflow.com/questions/31569549/how-to-groupby-a-dataframe-in-pandas-and-keep-columns
'programing' 카테고리의 다른 글
SQL Server 데이터베이스 복원 오류 (0) | 2023.10.04 |
---|---|
"text" 속성을 사용하여 파일을 정규화한 후 git가 마스터 브랜치를 체크아웃하고 캐리지 리턴을 제거하려면 어떻게 해야 합니까? (0) | 2023.10.04 |
사이트 루트 URL을 받으려면 어떻게 해야 합니까? (0) | 2023.09.24 |
XML로 표시된 Android 비트맵 이미지 크기 (0) | 2023.09.24 |
Angular JS에서 ngBind, ngBindHtm & ngBindTemplate의 차이 (0) | 2023.09.24 |