DataFrame に NaN がある場合、行のサブセットの DataFrame 列に割り当てるのに問題があります。わかりません、これはバグですか、それとも何か誤解していますか?
まず、NaNがない場合、私が望むものはうまくいくようです:
>>> import pandas as pd
>>> d = pd.DataFrame({ 'one' : [1, 2, 3], 'two' : [1,2,3] })
>>> d
one two
0 1 1
1 2 2
2 3 3
>>> d.ix[d['one']>1, 'two'] = -d['two']
>>> d
one two
0 1 1
1 2 -2
2 3 -3
ただし、厄介な NaN 行を追加すると、直感的でない結果が生じます。
>>> nan = float('nan')
>>> d = pd.DataFrame({ 'one' : [1, 2, 3, nan, nan], 'two' : [1,2,3,4,5] })
>>> d
one two
0 1 1
1 2 2
2 3 3
3 NaN 4
4 NaN 5
>>> d.ix[d['one']>1, 'two'] = -d['two']
>>> d
one two
0 1 1
1 2 -2
2 3 -2
3 NaN 4
4 NaN 5
ここで何が起こっているのですか?これは Python 2.7.5 と pandas 0.11 の場合です。