我有一个数据框:
     0         1         2   3         4  y
35 NaN       NaN       NaN NaN  0.342153  0
40 NaN  0.326323       NaN NaN       NaN  0
43 NaN       NaN  0.290126 NaN       NaN  0
49 NaN  0.326323       NaN NaN       NaN  0
50 NaN  0.391147       NaN NaN       NaN  1
以及生成它的代码:
import pandas as pd
import numpy as np
nan = np.nan
df = pd.DataFrame(
{0L: {35: nan, 40: nan, 43: nan, 49: nan, 50: nan},
 1L: {35: nan,
  40: 0.32632316859446198,
  43: nan,
  49: 0.32632316859446198,
  50: 0.39114724480578139},
 2L: {35: nan, 40: nan, 43: 0.29012581014105987, 49: nan, 50: nan},
 3L: {35: nan, 40: nan, 43: nan, 49: nan, 50: nan},
 4L: {35: 0.34215328467153283, 40: nan, 43: nan, 49: nan, 50: nan},
 'y': {35: 0, 40: 0, 43: 0, 49: 0, 50: 1}})
我需要使用以下伪代码为每一列分配一个值:
column = 1 if column > threshold else 0 where column != NaN
我曾尝试使用花式索引来完成此操作:
df.ix[df[1].notnull(),1] = 1; df
     0   1         2   3         4  y
35 NaN NaN       NaN NaN  0.342153  0
40 NaN   1       NaN NaN       NaN  0
43 NaN NaN  0.290126 NaN       NaN  0
49 NaN   1       NaN NaN       NaN  0
50 NaN   1       NaN NaN       NaN  1
但是 A)我不确定如何应用条件逻辑和 B)我必须将逻辑迭代地应用到每一列而不是整个数据框。
问题:
如何将条件逻辑应用于数据帧的非空值,同时保留其他字段的空值?