복붙노트

[PYTHON] 판다에서 한 열을 제외한 모든 열을 선택하는 방법은 무엇입니까?

PYTHON

판다에서 한 열을 제외한 모든 열을 선택하는 방법은 무엇입니까?

다음과 같은 데이터 프레임 모양이 있습니다.

import pandas
import numpy as np
df = DataFrame(np.random.rand(4,4), columns = list('abcd'))
df
      a         b         c         d
0  0.418762  0.042369  0.869203  0.972314
1  0.991058  0.510228  0.594784  0.534366
2  0.407472  0.259811  0.396664  0.894202
3  0.726168  0.139531  0.324932  0.906575

열 b를 제외한 모든 열을 어떻게 얻을 수 있습니까?

해결법

  1. ==============================

    1.MultiIndex가없는 경우 df.columns는 열 이름의 배열이므로 다음과 같이 할 수 있습니다.

    MultiIndex가없는 경우 df.columns는 열 이름의 배열이므로 다음과 같이 할 수 있습니다.

    df.loc[:, df.columns != 'b']
    
              a         c         d
    0  0.561196  0.013768  0.772827
    1  0.882641  0.615396  0.075381
    2  0.368824  0.651378  0.397203
    3  0.788730  0.568099  0.869127
    
  2. ==============================

    2.ix는 사용하지 마십시오. 더 이상 사용되지 않습니다. 이 일을 가장 잘 읽고 관용적 인 방법은 df.drop ()입니다 :

    ix는 사용하지 마십시오. 더 이상 사용되지 않습니다. 이 일을 가장 잘 읽고 관용적 인 방법은 df.drop ()입니다 :

    >>> df
    
              a         b         c         d
    0  0.175127  0.191051  0.382122  0.869242
    1  0.414376  0.300502  0.554819  0.497524
    2  0.142878  0.406830  0.314240  0.093132
    3  0.337368  0.851783  0.933441  0.949598
    
    >>> df.drop('b', axis=1)
    
              a         c         d
    0  0.175127  0.382122  0.869242
    1  0.414376  0.554819  0.497524
    2  0.142878  0.314240  0.093132
    3  0.337368  0.933441  0.949598
    

    기본적으로 .drop ()는 내부에서 작동하지 않습니다. 불길한 이름에도 불구하고, df는이 과정에서 무사하게됩니다. df에서 b를 영구히 제거하려면 df.drop ( 'b', inplace = True)를 수행하십시오.

    df.drop ()는 또한 레이블리스트를 받아들입니다. df.drop ([ 'a', 'b'], axis = 1) 열 a와 b를 삭제합니다.

  3. ==============================

    3.

    df[df.columns.difference(['b'])]
    
    Out: 
              a         c         d
    0  0.427809  0.459807  0.333869
    1  0.678031  0.668346  0.645951
    2  0.996573  0.673730  0.314911
    3  0.786942  0.719665  0.330833
    
  4. ==============================

    4.다른 방법이 있습니다.

    다른 방법이 있습니다.

    df[[i for i in list(df.columns) if i != '<your column>']]
    

    원하지 않는 컬럼을 제외한 모든 컬럼을 표시하면됩니다.

  5. ==============================

    5.df.columns.isin ()을 사용할 수 있습니다.

    df.columns.isin ()을 사용할 수 있습니다.

    df.loc[:, ~df.columns.isin(['b'])]
    

    여러 열을 삭제하려는 경우 다음과 같이 간단합니다.

    df.loc[:, ~df.columns.isin(['col1', 'col2'])]
    
  6. ==============================

    6.@Salvador Dali를 약간 수정하면 제외 할 열 목록을 사용할 수 있습니다.

    @Salvador Dali를 약간 수정하면 제외 할 열 목록을 사용할 수 있습니다.

    df[[i for i in list(df.columns) if i not in [list_of_columns_to_exclude]]]
    

    또는

    df.loc[:,[i for i in list(df.columns) if i not in [list_of_columns_to_exclude]]]
    
  7. ==============================

    7.나는 최선의 방법은 @ 살바도르 달리에 의해 언급 된 방법이라고 생각합니다. 다른 사람들이 잘못되어있는 것은 아닙니다.

    나는 최선의 방법은 @ 살바도르 달리에 의해 언급 된 방법이라고 생각합니다. 다른 사람들이 잘못되어있는 것은 아닙니다.

    왜냐하면 하나의 열을 선택하고 하나의 변수에 넣고 나머지 열을 비교 또는 계산 목적으로 넣기를 원하는 데이터 세트가 있기 때문입니다. 그런 다음 데이터 세트의 열을 삭제하면 도움이되지 않을 수 있습니다. 물론 거기에는 유스 케이스가 있습니다.

    x_cols = [x for x in data.columns if x != 'name of column to be excluded']
    

    그런 다음 변수 x_cols의 열 컬렉션을 다른 계산을 위해 x_cols1과 같은 다른 변수에 넣을 수 있습니다.

    ex: x_cols1 = data[x_cols]
    
  8. from https://stackoverflow.com/questions/29763620/how-to-select-all-columns-except-one-column-in-pandas by cc-by-sa and MIT license