[python] 팬더 데이터 프레임 인덱스에 값이 있는지 확인하십시오.

나는 이것을 할 수있는 확실한 방법이 있다고 확신하지만 지금은 매끄러운 것을 생각할 수 없습니다.

기본적으로 대신 예외를 발생의 나는 좀하고 싶습니다 True또는 False값이 팬더에 존재하는지 df인덱스입니다.

import pandas as pd
df = pd.DataFrame({'test':[1,2,3,4]}, index=['a','b','c','d'])
df.loc['g']  # (should give False)

내가 지금 일하고있는 것은 다음과 같습니다

sum(df.index == 'g')



답변

이 트릭을해야합니다

'g' in df.index


답변

내가 찾던 것으로 참조하기 위해 “.values”메소드를 추가하여 값 또는 색인 내 존재 여부를 테스트 할 수 있습니다. 예 :

g in df.<your selected field>.values
g in df.index.values

간단한 목록을 얻거나 ndarray를 가져 오기 위해 “.values”를 추가하면 다른 파이썬 도구와 함께 “in”검사가 더 매끄럽게 실행됩니다. 그냥 사람들을 위해 그것을 던질 것이라고 생각했습니다.


답변

다중 인덱스는 단일 인덱스와 약간 다르게 작동합니다. 다중 인덱스 데이터 프레임에 대한 몇 가지 방법이 있습니다.

df = pd.DataFrame({'col1': ['a', 'b','c', 'd'], 'col2': ['X','X','Y', 'Y'], 'col3': [1, 2, 3, 4]}, columns=['col1', 'col2', 'col3'])
df = df.set_index(['col1', 'col2'])

in df.index 단일 인덱스 값을 확인할 때만 첫 번째 수준에서 작동합니다.

'a' in df.index     # True
'X' in df.index     # False

df.index.levels다른 레벨을 확인하십시오 .

'a' in df.index.levels[0] # True
'X' in df.index.levels[1] # True

df.index인덱스 조합 튜플을 체크인하십시오 .

('a', 'X') in df.index  # True
('a', 'Y') in df.index  # False


답변

DataFrame 사용 : df_data

>>> df_data
  id   name  value
0  a  ampha      1
1  b   beta      2
2  c     ce      3

나는 시도했다 :

>>> getattr(df_data, 'value').isin([1]).any()
True
>>> getattr(df_data, 'value').isin(['1']).any()
True

그러나:

>>> 1 in getattr(df_data, 'value')
True
>>> '1' in getattr(df_data, 'value')
False

너무 재미있어 : D


답변

df = pandas.DataFrame({'g':[1]}, index=['isStop'])

#df.loc['g']

if 'g' in df.index:
    print("find g")

if 'isStop' in df.index:
    print("find a") 


답변

아래 코드는 부울을 인쇄하지 않지만 인덱스로 데이터 프레임 하위 집합을 허용합니다 …이 문제를 해결하는 가장 효율적인 방법은 아니지만 이해합니다 (1)이 방법을 읽고 (2) 쉽게 하위 집합을 만들 수 있습니다 df1 색인이 df2에 존재하는 경우 :

df3 = df1[df1.index.isin(df2.index)]

또는 df1 색인이 df2에 존재하지 않는 경우 …

df3 = df1[~df1.index.isin(df2.index)]


답변