规范化时的值错误:数组不得包含infs或NaN

时间:2016-03-17 17:55:14

标签: python pandas data-structures

我正在尝试使用' .apply(np.log10)'来规范化我的数据,但在规范化后,某些行会变为-inf。由于我想在规范化后绘制数据的分布,我想知道是否有人可以帮我解决以下问题: 1-如何使用Pandas摆脱包含Nans或inf的行? 2-解释为什么会发生这种情况。

1 个答案:

答案 0 :(得分:2)

inf通常会因为你除以零而发生。因为您正在使用日志,所以如果您将日志记录为零,则会得到inf

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

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