Pandas DataFrame의 그룹에 순차 카운터 열 추가
데이터 랭글링의 맥락에서 순차 카운터를 추가하는 일반적인 작업이 있습니다. Pandas 데이터 프레임 내의 그룹에 대한 열입니다. 한 가지 접근 방식은 앞서 설명한 대로 콜백 함수를 사용하는 것입니다.
def callback(x): x['seq'] = range(1, x.shape[0] + 1) return x
이 방법은 작동하지만 번거로울 수 있으며 별도의 함수를 정의해야 합니다. 더 간결하고 우아한 해결책은 cumcount() 메서드를 활용하는 것입니다.
df.groupby(['c1', 'c2']).cumcount()
이 메서드는 각 그룹의 누적 개수를 계산하여 그룹 내의 각 행에 효과적으로 일련 번호를 할당합니다. 예를 들어 다음 데이터 프레임을 고려해보세요.
index | c1 | c2 | v1 |
---|---|---|---|
0 | A | X | 3 |
1 | A | X | 5 |
2 | A | Y | 7 |
3 | A | Y | 1 |
4 | B | X | 3 |
5 | B | X | 1 |
6 | B | X | 3 |
7 | B | Y | 1 |
8 | C | X | 7 |
9 | C | Y | 4 |
10 | C | Y | 1 |
11 | C | Y | 6 |
c1과 c2로 그룹화된 이 데이터 프레임에 cumcount()를 적용하면 다음이 생성됩니다.
index | c1 | c2 | v1 | seq |
---|---|---|---|---|
0 | A | X | 3 | 1 |
1 | A | X | 5 | 2 |
2 | A | Y | 7 | 1 |
3 | A | Y | 1 | 2 |
4 | B | X | 3 | 1 |
5 | B | X | 1 | 2 |
6 | B | X | 3 | 3 |
7 | B | Y | 1 | 1 |
8 | C | X | 7 | 1 |
9 | C | Y | 4 | 1 |
10 | C | Y | 1 | 2 |
11 | C | Y | 6 | 3 |
대신 1에서 주문을 시작하려면 0의 경우 cumcount() 결과에 1을 추가하면 됩니다.
df.groupby(['c1', 'c2']).cumcount() + 1
위 내용은 Pandas의 그룹화된 데이터에 순차적 카운터 열을 효율적으로 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!