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