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']
대신 계산하고 싶습니다 .
답변
이것은 작동합니다 :
if 'A' in df:
그러나 명확히하기 위해 아마 다음과 같이 쓸 것입니다.
if 'A' in df.columns:
답변
하나 이상의 열이 모두 존재 하는지 확인하려면 다음과 같이을 사용할 수 있습니다 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']]):
답변
if 문을 사용하지 않고 다른 방법을 제안 get()
하기 위해 DataFrame
s에 메소드를 사용할 수 있습니다 . 질문에 따라 합계를 수행하려면 다음을 수행하십시오.
df['sum'] = df.get('A', df['B']) + df['C']
DataFrame
get 메소드는 파이썬 사전 유사한 행동을 가지고있다.