팬더에서 하나의 열을 제외하고 모든 열을 선택하는 방법은 무엇입니까?
다음과 같은 데이터 프레임이 있습니다.
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
있습니까?
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
를 사용하지 마십시오 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>']]
You just pass all columns to be shown except of the one you do not want.
Another slight modification to @Salvador Dali enables a list of columns to exclude:
df[[i for i in list(df.columns) if i not in [list_of_columns_to_exclude]]]
or
df.loc[:,[i for i in list(df.columns) if i not in [list_of_columns_to_exclude]]]
I think the best way to do is the way mentioned by @Salvador Dali. Not that the others are wrong.
Because when you have a data set where you just want to select one column and put it into one variable and the rest of the columns into another for comparison or computational purposes. Then dropping the column of the data set might not help. Of course there are use cases for that as well.
x_cols = [x for x in data.columns if x != 'name of column to be excluded']
Then you can put those collection of columns in variable x_cols
into another variable like x_cols1
for other computation.
ex: x_cols1 = data[x_cols]
Here is a one line lambda:
df[map(lambda x :x not in ['b'], list(df.columns))]
before:
import pandas
import numpy as np
df = pd.DataFrame(np.random.rand(4,4), columns = list('abcd'))
df
a b c d
0 0.774951 0.079351 0.118437 0.735799
1 0.615547 0.203062 0.437672 0.912781
2 0.804140 0.708514 0.156943 0.104416
3 0.226051 0.641862 0.739839 0.434230
after:
df[map(lambda x :x not in ['b'], list(df.columns))]
a c d
0 0.774951 0.118437 0.735799
1 0.615547 0.437672 0.912781
2 0.804140 0.156943 0.104416
3 0.226051 0.739839 0.434230
참고URL : https://stackoverflow.com/questions/29763620/how-to-select-all-columns-except-one-column-in-pandas
'IT story' 카테고리의 다른 글
Node.js에서 여러 module.exports 선언 (0) | 2020.05.11 |
---|---|
Swift에서 ViewController를 해제하는 방법? (0) | 2020.05.11 |
Ruby Pry로 루프에서 나가려면 어떻게해야합니까? (0) | 2020.05.10 |
우분투에 Node.js 설치 (0) | 2020.05.10 |
파이썬리스트 빼기 연산 (0) | 2020.05.10 |