私はデータフレームを持っています:
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)データフレーム全体ではなく、各列にロジックを繰り返し適用する必要があります。
質問:
他のフィールドのnullを保持しながら、データフレームのnull以外の値に条件付きロジックを適用するにはどうすればよいですか?