Cela fonctionne (en utilisant Pandas 12 dev)
table2=table[table['SUBDIVISION'] =='INVERNESS']
Ensuite, j'ai réalisé que je devais sélectionner le champ en utilisant "commence par" Puisqu'il me manquait un groupe. Donc, selon le document Pandas aussi proche que possible, j'ai essayé
criteria = table['SUBDIVISION'].map(lambda x: x.startswith('INVERNESS'))
table2 = table[criteria]
Et obtenu AttributeError: l'objet 'float' n'a pas d'attribut 'commence par'
J'ai donc essayé une syntaxe alternative avec le même résultat
table[[x.startswith('INVERNESS') for x in table['SUBDIVISION']]]
Référence http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing Section 4: La compréhension des listes et la méthode de cartographie des séries peuvent également être utilisées pour produire des critères plus complexes :
Qu'est-ce que je rate?
Vous pouvez utiliser le str.startswith
Méthode DataFrame pour donner des résultats plus cohérents:
In [11]: s = pd.Series(['a', 'ab', 'c', 11, np.nan])
In [12]: s
Out[12]:
0 a
1 ab
2 c
3 11
4 NaN
dtype: object
In [13]: s.str.startswith('a', na=False)
Out[13]:
0 True
1 True
2 False
3 False
4 False
dtype: bool
et l'indexation booléenne fonctionnera très bien (je préfère utiliser loc
, mais cela fonctionne tout de même sans):
In [14]: s.loc[s.str.startswith('a', na=False)]
Out[14]:
0 a
1 ab
dtype: object
.
Il semble qu'au moins l'un de vos éléments dans la série/colonne soit un flottant, qui n'a pas de méthode de démarrage avec donc l'attributError, la compréhension de la liste devrait générer la même erreur ...
Pour récupérer toutes les lignes qui startwith chaîne obligatoire
dataFrameOut = dataFrame[dataFrame['column name'].str.match('string')]
Pour récupérer toutes les lignes qui contient chaîne obligatoire
dataFrameOut = dataFrame[dataFrame['column name'].str.contains('string')]
Vous pouvez utiliser apply
pour appliquer facilement n'importe quelle fonction de correspondance de chaîne à votre colonne élément par élément.
table2=table[table['SUBDIVISION'].apply(lambda x: x.startswith('INVERNESS')]
ceci en supposant que votre colonne "SUBDIVISION" est du type correct (chaîne)