如果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。
答案 0 :(得分:2)
这是0.11中的bug,并且已经在dev中修复(因此将在0.11.1中很快出来)。
感谢您的报告,此测试用例将是 has been added to pandas测试套件。