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

2

这是 0.11 中的一个错误,并且已经在 dev 中修复(所以将在 0.11.1 中,很快就会出来)。

感谢报告,这个测试用例将会 已添加到熊猫测试套件中。

于 2013-06-12T02:28:32.990 回答