J'ai une df de dataframe:
20060930 10.103 NaN 10.103 7.981
20061231 15.915 NaN 15.915 12.686
20070331 3.196 NaN 3.196 2.710
20070630 7.907 NaN 7.907 6.459
Ensuite, je veux sélectionner les lignes avec certains numéros de séquence qui sont indiquées dans une liste, supposons qu'il s'agisse de [1,3], puis de gauche:
20061231 15.915 NaN 15.915 12.686
20070630 7.907 NaN 7.907 6.459
Comment ou quelle fonction peut faire ça?
List = [1, 3]
df.ix[List]
devrait faire l'affaire! Lorsque j'indexe avec des trames de données, j'utilise toujours la méthode .ix (). C'est tellement plus facile et plus flexible ...
UPDATE Ce n'est plus la méthode acceptée pour l'indexation. La méthode ix
est obsolète. Utilisez .iloc
pour l'indexation basée sur un entier et .loc
pour l'indexation par étiquette.
vous pouvez aussi utiliser iloc:
df.iloc[[1,3],:]
Pour les grands ensembles de données, l'utilisation de la mémoire pour lire uniquement les lignes sélectionnées via le paramètre skiprows
est efficace.
Exemple
pred = lambda x: x not in [1, 3]
pd.read_csv("data.csv", skiprows=pred, index_col=0, names=...)
Cela va maintenant retourner un DataFrame à partir d'un fichier qui ignore toutes les lignes sauf 1 et 3.
Détails
De la docs :
skiprows
: sous forme de liste, d'entier ou appelable, par défautNone
...
Si appelable, la fonction appelable sera évaluée par rapport aux index de ligne, renvoyant True si la ligne doit être ignorée et False sinon. Un exemple d'argument appelable valide serait
lambda x: x in [0, 2]
Cette fonctionnalité fonctionne dans la version pandas 0.20.0+. Voir aussi le numéro correspondant et un article lié .