我读到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'>
答案 0 :(得分:1)
所以这是一个错误。到2013年5月底,pandas 0.11.1应该与bug修复一起发布(参见关于这个问题的评论)。 与此同时,我避免在任何多索引中使用带有NaN的值,例如通过对“QC”列中的NaN使用其他一些标志值(-99)。