[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

어떻게 제외하고 모든 열을 얻을 수 column b있습니까?



답변

열이 다중 인덱스가 아닌 경우 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


답변

를 사용하지 마십시오 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하고이 과정은 무사합니다. 에서 영구적으로 제거하려면 b을 (를 df) 수행하십시오 df.drop('b', inplace=True).

df.drop()라벨 목록을 허용합니다 (예 : df.drop(['a', 'b'], axis=1)a및) b.


답변

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


답변

당신이 사용할 수있는 df.columns.isin()

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

다음과 같이 여러 열을 삭제하려는 경우 :

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


답변

다른 방법은 다음과 같습니다.

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

원하지 않는 열을 제외하고 표시 할 모든 열을 전달하면됩니다.


답변

@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]]]


답변

가장 좋은 방법은 @Salvador Dali가 언급 한 방법이라고 생각합니다. 다른 사람들이 잘못되었다는 것이 아닙니다.

하나의 열을 선택하고 비교 또는 계산 목적으로 하나의 변수에 나머지 열을 다른 변수에 넣으려는 데이터 세트가있는 경우. 그런 다음 데이터 세트의 열을 삭제하면 도움이되지 않을 수 있습니다. 물론 유스 케이스도 있습니다.

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]