2015-12-21 23 views
5

Ho il seguente oggetto Pandas DataFrame df. Si tratta di un orario dei treni che elenca la data di partenza, l'orario di partenza previsto e la compagnia ferroviaria.Pandas DataFrame: accede a più elementi con non uguale a, =!

import pandas as pd 
df = 

      Year Month DayofMonth DayOfWeek DepartureTime Train Origin 
Datetime 
1988-01-01 1988 1  1   5  1457  BritishRail Leeds 
1988-01-02 1988 1  2   6  1458  DeutscheBahn Berlin 
1988-01-03 1988 1  3   7  1459  SNCF   Lyons 
1988-01-02 1988 1  2   6  1501  BritishRail Ipswich 
1988-01-02 1988 1  2   6  1503  NMBS   Brussels 
.... 

Ora, supponiamo di voler selezionare tutti gli elementi "DeutscheBahn" nella colonna "Train".

userei

DB = df[df['Train'] == 'DeutscheBahn'] 

Ora, come posso selezionare tutti i treni ad eccezione Deutschebahn e Rails inglesi e SNCF. Come posso scegliere contemporaneamente gli articoli non questi?

notDB = df[df['Train'] != 'DeutscheBahn'] 

e

notSNCF = df[df['Train'] != 'SNCF'] 

ma non sono sicuro di come combinare questi in un unico comando.

df[df['Train'] != 'DeutscheBahn', 'SNCF'] 

non funziona.

risposta

9
df[~df['Train'].isin(['DeutscheBahn', 'SNCF'])] 

isin restituisce i valori in df['Train'] che sono nella lista data, e il ~ all'inizio è essenzialmente un operatore di not.

Un altro lavoro, ma la sintassi più sarebbe:

df[(df['Train'] != 'DeutscheBahn') & (df['Train'] != 'SNCF')] 
Problemi correlati