Compruebe si existe un valor en el índice de dataframe pandas

Estoy seguro de que hay una forma obvia de hacer esto, pero no puedo pensar en nada resbaladizo en este momento.

Básicamente, en lugar de generar una excepción, me gustaría obtener True o False para ver si existe un valor en el índice de pandas df .

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

Lo que tengo trabajando ahora es lo siguiente

 sum(df.index == 'g') 

Esto debería funcionar

 'g' in df.index 

Solo como referencia, ya que era algo que estaba buscando, puede probar la presencia dentro de los valores o el índice agregando el método “.values”, por ejemplo

 g in df..values g in df.index.values 

Encuentro que agregar los “valores” para obtener una lista simple o ndarray out hace que existan o “in” los cheques se ejecutan más fácilmente con las otras herramientas de python. Solo pensé que lo tiraría por ahí para la gente.

El índice múltiple funciona un poco diferente del índice único. Aquí hay algunos métodos para el dataframe multi-indexado.

 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 funciona para el primer nivel solo cuando se comprueba el valor de un solo índice.

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

Compruebe df.index.levels para otros niveles.

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

Verifique en df.index una tupla de combinación de índice.

 ('a', 'X') in df.index # True ('a', 'Y') in df.index # False 
 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") 

con DataFrame: df_data

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

Lo intenté:

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

pero:

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

Muy divertido: D