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