Je suis sûr qu'il existe un moyen évident de le faire, mais je ne peux penser à rien de louche en ce moment.
Fondamentalement, au lieu de lever une exception, j'aimerais obtenir True
ou False
pour voir si une valeur existe dans pandas df
index.
import pandas as pd
df = pd.DataFrame({'test':[1,2,3,4]}, index=['a','b','c','d'])
df.loc['g'] # (should give False)
Ce que je travaille maintenant est la suivante
sum(df.index == 'g')
Cela devrait faire l'affaire
'g' in df.index
Juste pour référence car c’était quelque chose que je recherchais, vous pouvez tester la présence dans les valeurs ou l’index en ajoutant la méthode ".values", par exemple.
g in df.<your selected field>.values
g in df.index.values
Je trouve que l’ajout des ".values" pour obtenir une simple liste ou que ndarray out permet d’exister ou que les contrôles "in" fonctionnent plus facilement avec les autres outils python. Je pensais juste que je lancerais ça pour les gens.
L'index multiple fonctionne un peu différemment de l'index simple. Voici quelques méthodes pour la structure de données à index multiples.
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
fonctionne pour le premier niveau uniquement lors de la vérification d'une valeur d'index unique.
'a' in df.index # True
'X' in df.index # False
Vérifiez df.index.levels
pour les autres niveaux.
'a' in df.index.levels[0] # True
'X' in df.index.levels[1] # True
Vérifiez dans df.index
pour une combinaison d'index Tuple.
('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")
avec DataFrame: df_data
>>> df_data
id name value
0 a ampha 1
1 b beta 2
2 c ce 3
J'ai essayé:
>>> getattr(df_data, 'value').isin([1]).any()
True
>>> getattr(df_data, 'value').isin(['1']).any()
True
mais:
>>> 1 in getattr(df_data, 'value')
True
>>> '1' in getattr(df_data, 'value')
False
Tellement amusant: D