source

판다 데이터 프레임 인덱스에 값이 있는지 확인합니다.

factcode 2023. 8. 17. 21:54
반응형

판다 데이터 프레임 인덱스에 값이 있는지 확인합니다.

나는 이것을 할 수 있는 분명한 방법이 있다고 확신하지만 지금 당장은 그럴듯한 어떤 것도 생각할 수 없습니다.

기본적으로 예외를 제기하는 대신에 저는 받고 싶습니다.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

다중 인덱스는 단일 인덱스와 조금 다르게 작동합니다.다음은 다중 인덱스 데이터 프레임을 위한 몇 가지 방법입니다.

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

참고로 제가 찾고 있던 것이기 때문에 예를 들어 ".values" 방법을 추가하여 값 또는 인덱스 내에서 존재 여부를 테스트할 수 있습니다.

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

간단한 목록이나 nd 배열을 가져오기 위해 ".values"를 추가하면 다른 python 도구와 함께 "in" 검사가 더 원활하게 실행된다는 것을 알게 되었습니다.사람들을 위해 저 밖에 던져버릴까 생각했어요.

아래 코드는 부울을 인쇄하지 않지만 인덱스별 데이터 프레임 부분 집합을 허용합니다.저는 이것이 문제를 해결하는 가장 효율적인 방법이 아닐 수도 있다는 것을 이해하지만, 저는 (1) 이것이 읽는 방식이 마음에 들고 (2) df1 인덱스가 df2에 있는 곳에서 쉽게 부분 집합할 수 있습니다.

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

또는 df1 인덱스가 df2에 존재하지 않는 경우...

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

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") 

즐겨 사용하는 항목:

if 'value' in df.index.get_level_values(0):
    print(True)

get_level_values 메서드는 인덱스가 단순하든 복합하든 상관없이 인덱스의 값을 가져올 수 있기 때문에 좋습니다.

데이터 프레임에 단일 인덱스가 있거나 여러 인덱스 수준에서 번째 인덱스를 확인하려는 경우 0을 사용합니다.두 번째 인덱스에 1을 사용하고, 그 다음과 같이 수행합니다.

언급URL : https://stackoverflow.com/questions/23549231/check-if-a-value-exists-in-pandas-dataframe-index

반응형