J'ai un bidimensionnel (ou plus) pandas DataFrame comme ceci:
>>> import pandas as pd
>>> df = pd.DataFrame([[0,1],[2,3],[4,5]], columns=['A', 'B'])
>>> df
A B
0 0 1
1 2 3
2 4 5
Supposons maintenant que j'ai un tableau numpy comme np.array([2,3])
et que je veuille vérifier s'il y a une ligne dans df
qui correspond au contenu de mon tableau. Ici, la réponse devrait évidemment être vraie, mais par exemple. np.array([1,2])
doit retourner false car il n'y a pas de ligne avec à la fois 1 dans la colonne A et 2 dans la colonne B.
Bien sûr, c'est facile, mais ne le voyez pas pour le moment.
Il s'avère que c'est vraiment facile, ce qui suit fait le travail ici:
>>> ((df['A'] == 2) & (df['B'] == 3)).any()
True
>>> ((df['A'] == 1) & (df['B'] == 2)).any()
False
Peut-être que quelqu'un propose une meilleure solution qui permet de passer directement dans le tableau et la liste des colonnes à faire correspondre.
Notez que les parenthèses autour de df['A'] == 2
ne sont pas facultatifs car le &
L'opérateur est aussi fort que le ==
opérateur.
un moyen plus simple est:
a = np.array([2,3])
(df == a).all(1).any()
Si vous souhaitez également renvoyer l'index où les correspondances se sont produites:
index_list = df[(df['A'] == 2)&(df['B'] == 3)].index.tolist()