2013-06-12 74 views
2

如果DataFrame中存在NaN,我無法爲行的子集分配DataFrame列。我不知道,這是一個錯誤還是我誤解了一些東西?如何使用NaN將矢量分配到pandas 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和熊貓0.11。

+1

[哦,我明白了 - 這是第二個'-2'。] – DSM

+0

這很快就會在dev(0.11.1)中修復。 –

+0

@AndyHayden:我只是在尋找問題#。你有手嗎? – DSM

回答

2

這是一個在0.11中的bug,並且已經在dev中修復(所以很快會在0.11.1中出現)。

感謝舉報,本測試用例將爲has been added to pandas測試套件。

+0

謝謝,我以爲我瘋了! – midfield

相關問題