Python 错误:无法从数据帧中删除无限值
这是我的数据帧Python 错误:无法从数据帧中删除无限值,python,pandas,Python,Pandas,这是我的数据帧df: col1 col2 -0.441406 2.523047 -0.321105 1.555589 -0.412857 2.223047 -0.356610 2.513048 当我检查df时,我看到有一些无穷大的值 np.any(np.isnan(df)) np.all(np.isfinite(df)) False True NaN和infinite之间有什么区别?另外,如何删除所有无限值以在np.all(np.isfinite(X))中实现 这就
df
:
col1 col2
-0.441406 2.523047
-0.321105 1.555589
-0.412857 2.223047
-0.356610 2.513048
当我检查df时,我看到有一些无穷大的值
np.any(np.isnan(df))
np.all(np.isfinite(df))
False
True
NaN和infinite之间有什么区别?另外,如何删除所有无限值以在np.all(np.isfinite(X))
中实现
这就是我所尝试的:
df = df.replace([np.inf, -np.inf], np.nan).dropna(how="all")
但是,检查无限
还是给了我真实的答案
此外,
.apply(lambda s:s[np.isfinite(s)].dropna()).count()提供的所有列的行数与df.shape
提供的行数相同,这表明缺少无限值。但在这种情况下,为什么np.all(np.isfinite(df))
返回True?您的问题类似于,
您是否尝试过:
df.replace([np.inf, -np.inf], np.nan).dropna(subset=["col1", "col2"], how="all")
np.nan
不被视为有限的
,您可以将np.nan
替换为任何有限的编号参见该代码示例:
结果:
A B C
0 1.0 inf -inf
False
A B C
0 1.0 NaN NaN
False
A B C
0 1.0 0.0 0.0
True
它与我在问题中发布的内容有何不同?这正是我尝试过的,但没有成功。不完全一样,因为:
.dropna(subset=[“col1”,“col2”],how=“all”)
!=.dropna()
我应该提到所有列吗?我可以做.dropna(subset=df.columns,how=“all”)
?我在我的帖子中添加了Jupyter笔记本的屏幕截图。是的,你可以做:subset=df.columns
A B C
0 1.0 inf -inf
False
A B C
0 1.0 NaN NaN
False
A B C
0 1.0 0.0 0.0
True