np.where Not Working in my Pandas

I have an np.where problem using Pandas that is driving me crazy and I can't seem to solve through Google, the documentation, etc.

I'm hoping someone has insight. I'm sure it isn't complex.

I have a df where I'm checking the value in one column - and if that value is 'n/a' (as a string, not as in .isnull()), changing it to another value.

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

returns:

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

so that part works.

but this:

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

returns:

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

What is going on?

1 Answer

You need to pass the boolean mask and the (two) values columns:

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)

See the np.where docs.

or alternatively use the where Series method:

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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like