>source

그룹과 세 가지 조건부 규칙을 사용하여 데이터 프레임의 하위 집합을 설정해야합니다. 그룹 내에서 값 열의 모든 값이없는 경우 해당 그룹의 첫 번째 행을 유지해야합니다. 그룹 내에서 값 열의 모든 값이없는 경우 모든 값을 유지해야합니다. 그룹 내에서 값 열의 일부 값이없고 다른 값이없는 경우 없음이있는 모든 행을 삭제해야합니다. 열 영역과 ID는 데이터 프레임 내에서 고유 한 그룹을 정의합니다.

첫 번째 접근 방식은 데이터 프레임을 두 개의 청크로 분리하는 것이 었습니다. 첫 번째 청크는 그룹에 대해 모두 널이있는 행입니다. 두 번째 덩어리는 다른 것입니다. 그룹의 행에 모든 null이 포함 된 데이터 청크의 경우 그룹별로 누적 행 수를 사용하여 행 번호를 만들고 누적 수 = 1 인 쿼리 행을 만듭니다. 두 번째 청크의 경우 Value가있는 모든 행을 삭제합니다 없는. 그런 다음 데이터 프레임을 추가합니다.

샘플 소스 데이터 프레임

dfInput = pd.DataFrame({
'Region':     [1, 1, 2, 2, 2, 2, 2],
'ID':     ['A', 'A', 'B', 'B', 'B', 'A', 'A'],
'Value':[0, 1, 1, None, 2, None, None],
})

원하는 출력 데이터 프레임 :

dfOutput = pd.DataFrame({
'Region':     [1, 1, 2, 2, 2],
'ID':     ['A', 'A', 'B', 'B', 'A'],
'Value':[0, 1, 1, 2, None],
})


  • 답변 # 1

    논리를 따르고 groupby 를 사용하십시오.  

    dfInput.groupby(['Region','ID']).Value.apply(lambda x : x.head(1) if x.isnull().all() else x.dropna()).\
            reset_index(level=[0,1]).sort_index()
    Out[86]: 
       Region ID  Value
    0       1  A    0.0
    1       1  A    1.0
    2       2  B    1.0
    4       2  B    2.0
    5       2  A    NaN
    
    

관련 자료

  • 이전 python list 데이터를 SQL 테이블 인스턴스에 삽입
  • 다음 antd - \ 9를 사용하는 타사 파일이 없기 때문에 Webpack에서 인식 할 수없는 입력