1

我读到 NaN 是有问题的,但以下导致我的数据实际损坏,而不是错误。这是一个错误吗?我错过了文档中的一些基本内容吗?我希望第二个命令给出错误或给出与第一个命令相同的响应:

ipdb> df
    year  PRuid  QC       data
18  2007  nonQC   0  8.014261
19  2008  nonQC   0  7.859152
20  2010  nonQC   0  7.468260
21  1985     10 NaN  0.861403
22  1985     11 NaN  0.878531
23  1985     12 NaN  0.842704
24  1985     13 NaN  0.785877
25  1985     24   1  0.730625
26  1985     35 NaN  0.816686
27  1985     46 NaN  0.819271
28  1985     47 NaN  0.807050
ipdb> df.set_index(['year','PRuid','QC']).reset_index()
    year  PRuid  QC       data
0   2007  nonQC   0  8.014261
1   2008  nonQC   0  7.859152
2   2010  nonQC   0  7.468260
3   1985     10   1  0.861403
4   1985     11   1  0.878531
5   1985     12   1  0.842704
6   1985     13   1  0.785877
7   1985     24   1  0.730625
8   1985     35   1  0.816686
9   1985     46   1  0.819271
10  1985     47   1  0.807050

“QC”的值实际上从 NaN 更改为 1,它应该是 NaN。

顺便说一句,为了对称,我添加了“.reset_index()”,但数据损坏是由 set_index 引入的。

如果这很有趣,版本是:

pd.version
<module 'pandas.version' from '/usr/lib/python2.6/site-packages/pandas-0.10.1-py2.6-linux-x86_64.egg/pandas/version.pyc'>
4

1 回答 1

1

所以这是一个错误。到 2013 年 5 月,pandas 0.11.1 应该会发布并修复错误(请参阅有关此问题的评论)。同时,我避免在任何多索引中使用带有 NaN 的值,例如,对“QC”列中的 NaN 使用其他一些标志值 (-99)。

于 2013-05-13T21:45:32.400 回答