我正在尝试从 sklearn 运行 PCA,但我不断得到ValueError: Input contains NaN, infinity or a value too large for dtype('float64'). 我很惊讶,因为我使用过df.dropna(),并且len(df)在使用后从 4096 变为 1566 drop.na()。
我尝试了很多事情,比如重置索引、制作显式副本等,但没有任何效果。下面的示例将演示一个对我来说似乎很奇怪的行为的最小示例。
df_test = pd.DataFrame([[0.11, 0.22],[1.11, 1.22]], columns=['s1', 's2'])
当我做
df_test[df_test.isna()]
我得到:
s1 s2
0 NaN NaN
1 NaN NaN
什么时候:
df_test[~df_test.isna()]
我得到:
s1 s2
0 0.11 0.22
1 1.11 1.22
我的期望
df_test[df_test.isna()]
是:
s1 s2
没有行。我的单元格中的值如何同时成为有效的 float64 和 NaN,这相当令人困惑......
UDPATE:原来在运行 PCA 时 NaN 不是问题,但实际上有 2 个无穷大值爬入我的数据中,直到我意识到 NaN 一直被正确处理,我才在我的 4096 x 15 数据帧中发现它。感谢所有回复!
catspeake
翻阅古今
随时随地看视频慕课网APP
相关分类