如何在带有NaN的pandas DataFrame中将向量分配给列的行子集?

时间:2013-06-12 01:56:31

标签: python pandas

如果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。

1 个答案:

答案 0 :(得分:2)

这是0.11中的bug,并且已经在dev中修复(因此将在0.11.1中很快出来)。

感谢您的报告,此测试用例将是 has been added to pandas测试套件。