1
votes

Supprimer la ligne dans le cadre de données avec des conditions

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)


0 commentaires

3 Réponses :


0
votes

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"])') )


0 commentaires

0
votes

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')]


0 commentaires

0
votes

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.


0 commentaires