Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 标准化时出现值错误:数组不能包含INF或NAN_Python_Pandas_Data Structures - Fatal编程技术网

Python 标准化时出现值错误:数组不能包含INF或NAN

Python 标准化时出现值错误:数组不能包含INF或NAN,python,pandas,data-structures,Python,Pandas,Data Structures,我正在尝试使用“.apply(np.log10)”对数据进行标准化,但在标准化后,一些行变成了-inf。由于我想绘制标准化后数据的分布,我想知道是否有人可以帮助我完成以下工作: 1-如何使用Pandas删除包含NAN或inf的行? 2-解释为什么会发生这种情况。通常会发生inf,因为你除以零。因为您使用的是日志,所以如果日志为零,则会得到inf 您可以删除包含NAN和INF的所有行,如下所示: np.random.seed(0) df = pd.DataFrame(np.random.randn

我正在尝试使用“
.apply(np.log10)
”对数据进行标准化,但在标准化后,一些行变成了-inf。由于我想绘制标准化后数据的分布,我想知道是否有人可以帮助我完成以下工作: 1-如何使用Pandas删除包含NAN或inf的行?
2-解释为什么会发生这种情况。

通常会发生
inf
,因为你除以零。因为您使用的是日志,所以如果日志为零,则会得到
inf

您可以删除包含NAN和INF的所有行,如下所示:

np.random.seed(0)
df = pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))
df.iat[0, 0] /= 0  # Add an inf
df.iat[-1, -1] = np.nan  # Add a NaN

>>> df
          A         B         C
0       inf  0.400157  0.978738
1  2.240893  1.867558 -0.977278
2  0.950088 -0.151357 -0.103219
3  0.410599  0.144044  1.454274
4  0.761038  0.121675       NaN

>>> df[df.apply(np.isfinite).all(axis=1)]
          A         B         C
1  2.240893  1.867558 -0.977278
2  0.950088 -0.151357 -0.103219
3  0.410599  0.144044  1.454274

inf
通常是因为被零除而发生的。因为您使用的是日志,所以如果日志为零,则会得到
inf

您可以删除包含NAN和INF的所有行,如下所示:

np.random.seed(0)
df = pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))
df.iat[0, 0] /= 0  # Add an inf
df.iat[-1, -1] = np.nan  # Add a NaN

>>> df
          A         B         C
0       inf  0.400157  0.978738
1  2.240893  1.867558 -0.977278
2  0.950088 -0.151357 -0.103219
3  0.410599  0.144044  1.454274
4  0.761038  0.121675       NaN

>>> df[df.apply(np.isfinite).all(axis=1)]
          A         B         C
1  2.240893  1.867558 -0.977278
2  0.950088 -0.151357 -0.103219
3  0.410599  0.144044  1.454274

调用
dropna
np.log10(df.dropna())
应该工作调用
dropna
np.log10(df.dropna())
应该工作