색인으로 ID 번호를 사용하는 큰 데이터 세트가 있습니다. 처리를 시작하기 전에 몇 가지 중복 ID를 처리해야하지만 여러 기준에 따라 수행해야합니다. 본질적으로 이 각 ID의 모든 중복 항목에서 제외되기를 원합니다.다중 기준에 중복 된 팬더 인덱스 놓기
이 예에서는 가장 최근 연도의 사본을 가져 와서 id 1을 고유하게 만들 수 있습니다. 그러나 ID 3은 여전히 왼쪽 두 개의 값을 가지고, 그럼 난 다음 조건에 가고 싶어 -이 경우 우리는 최대 발 말할 것이다 :
val year
id
1 7 2001
1 8 2002
2 9 2002
3 17 2001
3 11 2002
3 12 2002
: 결과가이 어디
import pandas as pd
data = {'id':[1, 1, 2, 3, 3, 3], 'year':[2001, 2002, 2002, 2001, 2002, 2002], 'val':[7, 8, 9, 17, 11, 12]}
df = pd.DataFrame(data).set_index('id')
dups = df[df.index.duplicated(keep=False)]
for id in dups.index.unique():
current = dups.loc[id]
max_yr = current['year'].max()
#continue to process using multiple conditionals inside the loop
을 그것은 작동
val year
id
1 8 2002
2 9 2002
3 12 2002
,하지만 매우 비효율적이고 벡터화 또는 적어도 더 좋은 방법이 작업을 수행 할 수있는가 있어야합니다 같은 느낌 :
이 변합니다. groupby를 통합 할 수는 있지만 그룹을 반복하지 않고도 어떻게 수행 할 것인지 확실하지 않습니다.
당신은 다음과 같습니다 :'df.groupby (level = 0) .max()'? – MaxU
아니요, 여러 ID를 복제 할 때 여러 기준을 고려하여 모든 ID에 대해 하나의 최상 항목을 남겨 둡니다. – Jeff