2015-10-21 17 views
5

Ho un problema np.where utilizzando Panda che mi sta facendo impazzire e io non riesco a risolvere tramite Google, la documentazione, eccnp.where non funziona nei miei Pandas

Sto sperando che qualcuno ha intuizione. Sono sicuro che non è complesso.

Ho un df dove sto verificando il valore in una colonna - e se quel valore è 'n/a' (come una stringa, non come in .isnull()), cambiandolo in un altro valore.

Full_Names_Test_2['MarketCap'] == 'n/a'

rendimenti:

70  True 
88  False 
90  True 
145  True 
156  True 
181  True 
191  True 
200  True 
219  True 
223 False 
Name: MarketCap, dtype: bool 

modo che lavora part.

ma questo:

Full_Names_Test_2['NewColumn'] = np.where(Full_Names_Test_2['MarketCap'] == 'n/a', 7) 

rendimenti:

ValueError: either both or neither of x and y should be given 

Che cosa sta succedendo?

risposta

6

è necessario passare la maschera valore booleano e la (due) valori colonne:

np.where(Full_Names_Test_2['MarketCap'] == 'n/a', 7) 
# should be 
np.where(Full_Names_Test_2['MarketCap'] == 'n/a', Full_Names_Test_2['MarketCap'], 7) 

Vedi le np.where docs.

o in alternativa utilizzare the where Series method:

Full_Names_Test_2['MarketCap'].where(Full_Names_Test_2['MarketCap'] == 'n/a', 7) 
+0

Sono come un idiota. Penso di non aver compreso la sintassi di base del metodo np.where. Ora vedo chiaramente. grazie ancora! – Windstorm1981

+0

@ Windstorm1981 fwow, penso che i documenti su questo metodo e questo messaggio di errore possano essere molto più chiari. Non è ovvio (basta, IMO) che è necessario il secondo argomento. – szeitlin