bestsource

특정 열을 제외한 DataFrame의 모든 열을 삭제하는 방법은 무엇입니까?

bestsource 2023. 7. 18. 21:51
반응형

특정 열을 제외한 DataFrame의 모든 열을 삭제하는 방법은 무엇입니까?

예를 들어 다음과 같은 데이터 프레임이 있다고 가정해 보겠습니다.

a  b  c  d  e  f  g  
1  2  3  4  5  6  7
4  3  7  1  6  9  4
8  9  0  2  4  2  1

다음의 모든 열을 삭제하려면 어떻게 해야 합니까?a그리고.b?

이로 인해 다음과 같은 결과가 발생합니다.

a  b
1  2
4  3
8  9

저는 다음과 같은 간단한 코드 행을 사용하여 이것들을 삭제하는 방법을 원합니다.a그리고.b제가 1000개의 데이터 열을 가지고 있다고 가정해 보겠습니다.

감사해요.

In [48]: df.drop(df.columns.difference(['a','b']), 1, inplace=True)
Out[48]:
   a  b
0  1  2
1  4  3
2  8  9

또는:

In [55]: df = df.loc[:, df.columns.intersection(['a','b'])]

In [56]: df
Out[56]:
   a  b
0  1  2
1  4  3
2  8  9

PS는 그것을 하는 가장 관용적인 Panda 방법이 이미 @Wen에 의해 제안되었다는 것을 알아두시기 바랍니다.

df = df[['a','b']]

또는

df = df.loc[:, ['a','b']]

혼합에 추가할 수 있는 또 다른 옵션입니다.가독성을 위해 이 방법을 선호합니다.

df = df.filter(['a', 'b'])

첫 번째 위치 인수가 있는 위치items=[]


보너스

사용할 수도 있습니다.like논쟁 또는regex필터링합니다.
다음과 같은 열 집합이 있는 경우 유용합니다.['a_1','a_2','b_1','b_2']

할수있습니다

df = df.filter(like='b_')

결국엔['b_1','b_2']

필터를 위한 판다 문서입니다.

여러 가지 해결책이 있습니다.

df = df[['a','b']] #1

df = df[list('ab')] #2

df = df.loc[:,df.columns.isin(['a','b'])] #3

df = pd.DataFrame(data=df.eval('a,b').T,columns=['a','b']) #4 PS:I do not recommend this method , but still a way to achieve this 

이봐요, 당신이 찾고 있는 것은:

df = df[["a","b"]]

a 및 b 열만 포함된 데이터 프레임을 수신합니다.

삭제할 열보다 더 많은 열만 유지하려면 .isin 문 앞에 "~"를 입력하여 원하는 열을 제외한 모든 열을 선택합니다.

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

삭제할 열이 두 개 이상 있는 경우20또는30목록도 사용할 수 있습니다.축 값도 지정해야 합니다.

drop_list = ["a","b"]
df = df.drop(df.columns.difference(drop_list), axis=1)

언급URL : https://stackoverflow.com/questions/45846189/how-to-delete-all-columns-in-dataframe-except-certain-ones

반응형