Eliminer enregistrements

Résolu/Fermé
chaldeen - 12 avril 2021 à 19:36
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 13 avril 2021 à 21:55
Bonjour,

Je rencontre un problème sur lequel je ne pensais pas buter si longtemps, mais je ne trouve pas la solution.
En bref, je possède un dataframe sur lequel j'aimerais ne garder que les enregistrements dont l'Id_compteur figure dans la liste 'list' (qui correspond en réalité aux Id d'une autre table.
J'ai testé ce code en créant une liste 'data', ainsi qu'en créant un dataframe 'data' également, mais j'ignore ce qui bloque jusque-là.

data = []
for row in df_data_mesures:
if df_data_mesures['Id_compteur'] in list:
data.append(row)


ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().


Merci à vous

3 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 13 avril 2021 à 01:56
Bonjour,

df_data_mesures['Id_compteur']
désigne une série de valeurs, et non une seule valeur.

Du coup,
pandas
te dis que ton test est ambigu, car il n'est pas clair si le test doit s'appliquer à certains (
any
) ou tous (
all
) les éléments de la série.

Dans ton cas, je pense que tu veux plutôt filtrer certaines valeurs de cette série, comme le permet la méthode
isin
.

Bonne chance
1
Bonjour,

Je me suis plus précisément servi sur ce forum : https://stackoverflow.com/questions/19960077/how-to-filter-pandas-dataframe-using-in-and-not-in-like-in-sql

Merci beaucoup !
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
13 avril 2021 à 21:18
Merci pour les précisions, bonne continuation !
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
13 avril 2021 à 21:55
bonjour,
sans doute:
data = []
for row in df_data_mesures:
    if row['Id_compteur'] in list:
        data.append(row)
0