2013-07-02 5 views
6

Je suis relativement nouveau à Python/Pandas et je suis aux prises avec l'extraction des données correctes d'un pd.Dataframe. Ce que je fait est une trame de données avec 3 colonnes:Extraire toutes les lignes de pandas Dataframe qui ont une certaine valeur dans une colonne spécifique

data = 

Position Letter Value 
1  a  TRUE 
2  f  FALSE 
3  c  TRUE 
4  d  TRUE 
5  k  FALSE 

Ce que je veux faire est de mettre toutes les lignes TRUE dans une nouvelle trame de données afin que la réponse serait:

answer = 

Position Letter Value 
1  a  TRUE 
3  c  TRUE 
4  d  TRUE 

Je sais que vous pouvez accéder à une colonne particulière en utilisant

data['Value'] 

mais comment puis-je extraire toutes les lignes TRUE?

Merci pour toute l'aide et des conseils,

Alex

+0

double possible de [? Comment filtrer les lignes de dataframe de pandas géants par "dans"/"dans"] (http://stackoverflow.com/ questions/12065885/how-to-filter-the-dataframe-rows-of-pandas-by-within-in) – DontDivideByZero

Répondre

13

Vous pouvez tester les valeurs sont vraies:

In [11]: data['Value'] == True 
Out[11]: 
0  True 
1 False 
2  True 
3  True 
4 False 
Name: Value, dtype: bool 

puis utilisez FancyIndexing pour tirer sur les lignes:

In [12]: data[data['Value'] == True] 
Out[12]: 
    Position Letter Value 
0   1  a True 
2   3  c True 
3   4  d True 

* Note: si les valeurs sont réellement les chaînes 'TRUE' et 'FALSE' (! Ils ne devraient pas être probablement) puis utiliser:

data['Value'] == 'TRUE' 
+0

et quand vous utilisez: 'data ['Value'] == 'TRUE''? –

+1

Il ne fonctionne pas avec les données ['Value'] == 'TRUE' mais fonctionne avec les données [data ['Value'] == True] – user1083734

Questions connexes