I am trying to figure out how the np.where clause works. I create a simple df:
np.random.seed(1)
df = pd.DataFrame(np.random.randint(0, 10, size=(3, 4)), columns=list('ABCD'))
print(df)
   A  B  C  D
0  5  8  9  5
1  0  0  1  7
2  6  9  2  4
Now when I implement:
print(np.where(df.values, 1, np.nan))
I receive:
[[  1.   1.   1.   1.]
 [ nan  nan   1.   1.]
 [  1.   1.   1.   1.]]
But when I create an empty_like array from df: and put it into where clause I receive this:
print(np.where(np.empty_like(df.values), 1, np.nan))
[[ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]]
Really could use help on explaining how where clause works on a single array.


np.empty_like? Note that its values will not be0, and thus none of them will be falsey, which is whynp.wherereturns an ndarray of ones