为了账号安全,请及时绑定邮箱和手机立即绑定

我的数据框中的值如何同时为 NaN 和浮动

我的数据框中的值如何同时为 NaN 和浮动

catspeake 2022-06-02 15:22:34
我正在尝试从 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  s20 NaN NaN1 NaN NaN什么时候:df_test[~df_test.isna()]我得到:   s1    s20  0.11  0.221  1.11  1.22我的期望df_test[df_test.isna()]是:s1  s2没有行。我的单元格中的值如何同时成为有效的 float64 和 NaN,这相当令人困惑......UDPATE:原来在运行 PCA 时 NaN 不是问题,但实际上有 2 个无穷大值爬入我的数据中,直到我意识到 NaN 一直被正确处理,我才在我的 4096 x 15 数据帧中发现它。感谢所有回复!
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

当 you 时df_test.isna(),它会创建一个布尔掩码。


>>> df_test.isna()

      s1     s2

0  False  False

1  False  False

现在,当您使用此掩码进行过滤时,它将返回一个NaN.


>>> df_test[df_test.isna()]

   s1  s2

0 NaN NaN

1 NaN NaN

如果你不想要,NaN那么就把它们放下。


how当我们至少有一个 NA 或全部 NA 时,该参数确定是否从 DataFrame 中删除行或列。


'any' :如果存在任何 NA 值,则删除该行或列。


'all' :如果所有值都是 NA,则删除该行或列。


>>> df_test[df_test.isna()].dropna(how='all') # Depends on the situation

Empty DataFrame

Columns: [s1, s2]

Index: []


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号