Comment puis-je filtrer les lignes d'un CSV à charger en mémoire à l'aide de pandas? Cela semble être une option dans laquelle on devrait trouver read_csv
. Est-ce que je manque quelque chose?
Exemple: nous avons un CSV avec une colonne d'horodatage et nous aimerions charger uniquement les lignes qui ont un horodatage supérieur à une constante donnée.
chunk['filed']>constant
puis-je le prendre en sandwich entre 2 valeurs constantes? Par exemple: constante1> chunk ['champ']> constante2. Ou puis-je utiliser «à portée»?chunk[(chunk['field'] > constant2)&(chunk['field']<constant1)]
.loc
?chunk.loc[chunk['field'] > constant]
.loc
. Je ne pense pas qu'il.loc
existait en 2012, mais je suppose que ces jours-ci, l'utilisation.loc
est un peu plus explicite.Je n'ai pas trouvé de moyen simple de le faire dans le contexte de
read_csv
. Cependant,read_csv
renvoie un DataFrame, qui peut être filtré en sélectionnant des lignes par vecteur booléendf[bool_vec]
:Il s'agit de sélectionner toutes les lignes dans df (en supposant que df est un DataFrame, tel que le résultat d'un
read_csv
appel, qui contient au moins une colonne datetimetimestamp
) pour lequel les valeurs de latimestamp
colonne sont supérieures à la valeur de targettime. Question similaire .la source
Si la plage filtrée est contiguë (comme c'est généralement le cas avec les filtres d'horodatage), la solution la plus rapide consiste à coder en dur la plage de lignes. Combinez simplement
skiprows=range(1, start_row)
avec desnrows=end_row
paramètres. Ensuite, l'importation prend quelques secondes alors que la solution acceptée prendrait quelques minutes. Quelques expériences avec l'initialestart_row
ne sont pas un coût énorme étant donné les économies sur les temps d'importation. Notez que nous avons conservé la ligne d'en-tête en utilisantrange(1,..)
.la source
Vous pouvez spécifier le
nrows
paramètre.import pandas as pd df = pd.read_csv('file.csv', nrows=100)
Ce code fonctionne bien dans la version 0.20.3.
la source
Si vous êtes sous Linux, vous pouvez utiliser grep.
la source