Pandas에 열이 있는지 확인하는 방법


274

Pandas DataFrame에 열이 있는지 확인하는 방법이 있습니까?

다음과 같은 DataFrame이 있다고 가정하십시오.

>>> import pandas as pd
>>> from random import randint
>>> df = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)],
                       'B': [randint(1, 9)*10 for x in xrange(10)],
                       'C': [randint(1, 9)*100 for x in xrange(10)]})
>>> df
   A   B    C
0  3  40  100
1  6  30  200
2  7  70  800
3  3  50  200
4  7  50  400
5  4  10  400
6  3  70  500
7  8  30  200
8  3  40  800
9  6  60  200

나는 계산하고 싶다 df['sum'] = df['A'] + df['C']

그러나 먼저 df['A']존재 하는지 확인 하고, 그렇지 않은 경우 df['sum'] = df['B'] + df['C']대신 계산하고 싶습니다 .

답변:


585

이것은 작동합니다 :

if 'A' in df:

그러나 명확히하기 위해 아마 다음과 같이 쓸 것입니다.

if 'A' in df.columns:

2
다른 방법으로 다음 if not 'A' in df.columns:을 사용할 수 있습니다. 에 A없는 경우 작업을 실행하려면df
Robvh

81

하나 이상의 열이 모두 존재 하는지 확인하려면 다음과 같이을 사용할 수 있습니다 set.issubset.

if set(['A','C']).issubset(df.columns):
   df['sum'] = df['A'] + df['C']                

@brianpck이 주석에서 지적한 것처럼 set([])대안으로 중괄호로 구성 할 수 있습니다.

if {'A', 'C'}.issubset(df.columns):

중괄호 구문에 대한 설명은 이 질문 을 참조하십시오 .

또는 다음과 같이 목록 이해를 사용할 수 있습니다.

if all([item in df.columns for item in ['A','C']]):

11
아니면 그냥{'A', 'B'}.issubset()
brianpck

7

if 문을 사용하지 않고 다른 방법을 제안 get()하기 위해 DataFrames에 메소드를 사용할 수 있습니다 . 질문에 따라 합계를 수행하려면 다음을 수행하십시오.

df['sum'] = df.get('A', df['B']) + df['C']

DataFrameget 메소드는 파이썬 사전 유사한 행동을 가지고있다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.