2

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 の場合です。

4

1 に答える 1