Slice Pandas DataFrame par ligne
je travaille avec des données d'enquête chargées à partir d'un fichier h5 comme hdf = pandas.HDFStore('Survey.h5')
à travers le paquet pandas. Dans ce DataFrame
, toutes les lignes sont les résultats d'un seul sondage, alors que les colonnes sont les réponses pour toutes les questions d'un même sondage.
j'ai l'intention de réduire cet ensemble de données à un plus petit DataFrame
comprenant seulement les lignes avec une certaine réponse représentée sur une certaine question, c.-à-d. avec toute la même valeur dans cette colonne. Je suis capable de déterminer les valeurs d'index de toutes les lignes avec cette condition, mais je ne peux pas trouver comment supprimer cette ligne ou faire un nouveau df avec ces lignes seulement.
2 réponses
In [36]: df
Out[36]:
A B C D
a 0 2 6 0
b 6 1 5 2
c 0 2 6 0
d 9 3 2 2
In [37]: rows
Out[37]: ['a', 'c']
In [38]: df.drop(rows)
Out[38]:
A B C D
b 6 1 5 2
d 9 3 2 2
In [39]: df[~((df.A == 0) & (df.B == 2) & (df.C == 6) & (df.D == 0))]
Out[39]:
A B C D
b 6 1 5 2
d 9 3 2 2
In [40]: df.ix[rows]
Out[40]:
A B C D
a 0 2 6 0
c 0 2 6 0
In [41]: df[((df.A == 0) & (df.B == 2) & (df.C == 6) & (df.D == 0))]
Out[41]:
A B C D
a 0 2 6 0
c 0 2 6 0
si vous connaissez déjà l'index, vous pouvez utiliser .loc
:
In [12]: df = pd.DataFrame({"a": [1,2,3,4,5], "b": [4,5,6,7,8]})
In [13]: df
Out[13]:
a b
0 1 4
1 2 5
2 3 6
3 4 7
4 5 8
In [14]: df.loc[[0,2,4]]
Out[14]:
a b
0 1 4
2 3 6
4 5 8
In [15]: df.loc[1:3]
Out[15]:
a b
1 2 5
2 3 6
3 4 7