Voici ma trame de données:
df=df.loc[((df['Number'] < 6) & (df['Tell']!='ye')& (df['Observation']!='Yes'))]
Je veux que mon programme puisse supprimer chaque ligne de ma trame de données si le nombre est supérieur à 6 et que la colonne Tell est soit Oui, soit Oui.
Je veux que ça ressemble à ça:
ID Tell Number 0 1 Yes 2 1 1 Yes 6 2 1 No 9 3 2 Yes 4 4 2 No 8 5 3 Yes 2 6 3 No 6 7 3 Yes 2
Voici ce que j'ai essayé:
ID Tell Number
0 1 Perhaps 2
1 1 Yes 6
2 1 No 9
3 2 Yes 4
4 2 Ye 7
5 2 No 8
6 3 Ye 15
7 3 Perhaps 2
8 3 No 6
9 3 Yes 2
# Creating the dictionary
dic = {'ID': [1,1,1,2,2,2,3,3,3,3], 'Tell': ['Perhaps', 'Yes', 'No', 'Yes','Ye', 'No','Ye', 'Perhaps','No', 'Yes'], 'Number': [3,6,9,4,7,8,15,8,6,13]}
# Creating the dataframe
df = pd.DataFrame(dic)
3 Réponses :
Vous pouvez utiliser df.query:
ID Tell Number 0 1 Perhaps 3 1 1 Yes 6 2 1 No 9 3 2 Yes 4 5 2 No 8 7 3 Perhaps 8 8 3 No 6
Prints:
print( df.query('not (Number > 6 and Tell in ["Ye", "Yes"])') )
Juste au cas où vous auriez une colonne Observation que vous ne nous avez pas donnée. Essayez;
df[(df['Number']<6)&(df['Tell']!='Ye')&(df['Observation']!='Yes')]
Il peut y avoir une erreur dans cette ligne:
df = df.loc [((df ['Number'] <6) & (df ['Tell']! = 'ye') & (df ['Observation']! = 'Oui' ))]
Je vois qu'il n'y a pas de colonne Observation et aussi votre df a Ye et vous avez ye votre condition. C'est peut-être le problème. Essayez donc de mettre en majuscule ye en Ye et Observation en Tell
df = df.loc [((df ['Number'] <6) & (df ['Tell']! = 'Ye') & df ['Tell']! = 'Yes') )]
Faites-moi savoir si tel était le problème.