2015-05-12 10 views
7

Sto cercando di scrivere uno script rapido che verrà eseguito attraverso un file csv con due colonne e fornirmi le righe in cui i valori nella colonna B passano da un valore all'altro:Determinare quando un valore di colonna cambia in pda dataframe

esempio:

dataframe:

# | A | B 
--+-----+----- 
1 | 2 | 3 
2 | 3 | 3 
3 | 4 | 4 
4 | 5 | 4 
5 | 5 | 4 

mi avrebbe detto che il cambiamento è avvenuto tra la riga 2 e la riga 3. so come ottenere questi valori utilizzando per i loop ma speravo ci fosse un altro modo pitonioso di affrontare questo problema.

+0

Spiacente stai chiedendo se 'A' non è uguale a 'B' sulla stessa riga? – EdChum

+0

No sorry Sto solo cercando di capire per quali righe il valore in B cambia. I valori in A sono ciò che voglio vedere quando B cambia ma ho quella parte che funziona. (Ho aggiornato il DF per renderlo più chiaro) – badrobit

risposta

10

È possibile creare una nuova colonna per la differenza

> df['C'] = df['B'].diff() 
> print df 
    # A B C 
0 1 2 3 NaN 
1 2 3 3 0 
2 3 4 4 1 
3 4 5 4 0 
4 5 5 4 0 

> df_filtered = df[df['C'] != 0] 
> print df_filtered 
    # A B C 
2 3 4 4 1 

Ciò le righe necessarie

+1

Come si può fare questo con le differenze per le stringhe? Sembra che questo diff() funzioni solo per i numeri. Potrei convertire tutte le stringhe in numeri ... – amc

+1

@amc dai uno sguardo a https://stackoverflow.com/a/40348884/1451311 – mgilbert