>

아래와 같은 DataFrame이있었습니다 :

      column-a         column-b      column-c
0          Nan             A              B
1           A              Nan            C
2           Nan            Nan            C
3           A              B              C

A 컬럼에서 C 컬럼으로 NULL이 아닌 모든 값을 캡처하기 위해 새로운 컬럼 D를 작성하려고합니다.

       column d
0        A,B
1        A,C
2        C
3        A,B,C

감사합니다!

  • 답변 # 1

    'Nan' 를 변경해야합니다   np.nan 로 그런 다음 stack 를 사용하십시오.   groupby 와 함께  와이즈 비즈

    join
    
    

  • 답변 # 2

    df=df.replace('Nan',np.nan) df.stack().groupby(level=0).agg(','.join) Out[570]: 0 A,B 1 A,C 2 C 3 A,B,C dtype: object #df['column-d']= df.stack().groupby(level=0).agg(','.join) 를 수정 한 후 s :

    nan
    
    

    목록의 각 행에서 널이 아닌 모든 값을 수집하고 목록 항목을 결합하십시오.

    df = df.replace('Nan', np.nan)
    
    

    놀랍게도이 솔루션은 df['column-d'] = df.apply(lambda x: ','.join(x[x.notnull()]), axis=1) #0 A,B #1 A,C #2 C #3 A,B,C 보다 다소 빠릅니다.  게시 된 데이터 집합에 대한 Wen의 솔루션.

    stack/groupby

  • 이전 java - 일반 BiDiMap
  • 다음 Buildroot는 Linux 커널을 빌드하지 않고도 루트 파일 시스템을 빌드 할 수 있습니까?