Comment avec pandas supprimer d'une data frame les lignes avec des valeurs en dessous et au dessus d'une valeur minimum et maximum ?


Exemple de solution sur comment supprimer avec pandas des lignes en utilisant une valeur minimum et maximum en utilisant la fonction between(). Soit le data frame suivant:

>>> import pandas as pd 
>>> data = {'Label':['a','b','c','d','e','f','g','h','i','j'],'Value 1':[0,9,3,7,2,6,5,9,6,3], 'Value 2':[56,34,99,11,78,89,34,94,65,36]} 
>>> df = pd.DataFrame(data)
>>> df
  Label  Value 1  Value 2
0     a        0       56
1     b        9       34
2     c        3       99
3     d        7       11
4     e        2       78
5     f        6       89
6     g        5       34
7     h        9       94
8     i        6       65
9     j        3       36

Si on veut supprimer les lignes dont les valeurs de la colonne "Value 1" ne sont pas entre les valeurs vmin et vmax suivantes:

>>> vmin = 3
>>> vmax = 7
>>> column = 'Value 1'

on peut utiliser la fonction between:

>>> df = df[df[column].between(vmin, vmax)]
>>> df
  Label  Value 1  Value 2
2     c        3       99
3     d        7       11
5     f        6       89
6     g        5       34
8     i        6       65
9     j        3       36

Si on veut maintenant supprimer les lignes dont les valeurs de la colonne "Value 2" ne sont pas entre les valeurs vmin et vmax suivantes:

>>> vmin = 20
>>> vmax = 80
>>> column = 'Value 2'

donne

>>> df = df[df['Value 2'].between(20, 80)]
>>> df
  Label  Value 1  Value 2
6     g        5       34
8     i        6       65
9     j        3       36

Références