Je travaille avec des données d'enquête chargées à partir d'un fichier h5 en tant que hdf = pandas.HDFStore('Survey.h5')
via le package pandas. Dans ce DataFrame
, toutes les lignes sont les résultats d'un enquête unique, tandis que les colonnes sont les réponses à toutes les questions d'une enquête unique.
Je vise à réduire cet ensemble de données à un DataFrame
plus petit, comprenant uniquement les lignes avec une certaine réponse représentée sur une certaine question, c'est-à-dire avec toutes la même valeur dans cette colonne. Je peux déterminer les valeurs d'index de toutes les lignes avec cette condition, mais je ne trouve pas comment supprimer ces lignes ou créer un nouveau df avec ces lignes uniquement.
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