[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)]