Se si desidera impostare la colonna su cui si filtra come nuovo indice, è possibile considerare l'utilizzo di .filter
; se vuoi tenerlo come una colonna separata, allora la str.contains
è la strada da percorrere.
Diciamo che avete
df = pd.DataFrame({'vals': [1, 2, 3, 4, 5], 'ids': [u'aball', u'bball', u'cnut', u'fball', 'ballxyz']})
ids vals
0 aball 1
1 bball 2
2 cnut 3
3 fball 4
4 ballxyz 5
e il vostro piano è quello di filtrare tutte le righe in cui ids
contiene ball
e impostare ids
come nuovo indice, si può fare
df.set_index('ids').filter(like='ball', axis=0)
che dà
vals
ids
aball 1
bball 2
fball 4
ballxyz 5
Ma filter
consente anche di passare un'espressione regolare, in modo da poter filtrare solo le righe in cui la voce della colonna termina con ball
. In questo caso si utilizza
df.set_index('ids').filter(regex='ball$', axis=0)
vals
ids
aball 1
bball 2
fball 4
Nota che ora la voce con ballxyz
non è incluso come si comincia con ball
e non finisce con esso.
Se si desidera ottenere tutte le voci che iniziano con ball
è possibile utilizzare semplici
df.set_index('ids').filter(regex='^ball', axis=0)
cedendo
vals
ids
ballxyz 5
Le stesse opere con colonne; tutto ciò che è necessario modificare è la parte axis=0
. Se filtri in base alle colonne, sarebbe axis=1
.
Dovresti accettare una delle 5 risposte che sono state pubblicate, ci sarà un segno di spunta sotto i pulsanti di voto, nota che le risposte 'str.contains' sono probabilmente il metodo più veloce e raccomandato per i tuoi requisiti: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.strings.StringMethods.contains.html#pandas.core.strings.StringMethods.taintains – EdChum