>

행이 많은 데이터 프레임이 있습니다. 열에 목록에 지정된 값이있는 경우에만 행을 유지하려고합니다.

df.head()
'id' 'col1' 'col2' 'col3
row1  A     NaN    B
row2  C      D     E
row3  X     NaN    NaN
List_val = ['A','X']

원하는 결과는 :

df_new = 
'id' 'col1' 'col2' 'col3
 row1  A     NaN    B
 row3  X     NaN    NaN

다음을 시도했습니다 :

df1 = df[df.columns.isin(List_val)]

작동하지 않았다. 하나의 기능으로 어떤 것과 isin을 결합하는 방법?

고맙습니다.

AP


  • 답변 # 1

    DataFrame.isin 가 필요합니다  적어도 하나의 True 를 확인하십시오  행당 DataFrame.any   axis=1 와 함께 :

    print (df.isin(List_val))
          id   col1   col2   col3
    0  False   True  False  False
    1  False  False  False  False
    2  False   True  False  False
    print (df.isin(List_val).any(axis=1))
    0     True
    1    False
    2     True
    dtype: bool
    df = df[df.isin(List_val).any(axis=1)]
    print (df)
         id col1 col2 col3
    0  row1    A  NaN    B
    2  row3    X  NaN  NaN
    
    

    id 를 비교할 필요가 없다면  열 단순히 drop  그것 :

    df = df[df.drop('id', axis=1).isin(List_val).any(axis=1)]
    print (df)
         id col1 col2 col3
    0  row1    A  NaN    B
    2  row3    X  NaN  NaN
    
    

  • 이전 security - ASPNET Core Identity 인증 후 IdentityServer4 콜백 URL이 반환되지 않음
  • 다음 angular - Typescript Extend String 인터페이스 런타임 오류