我知道有几个关于此的帖子,但没有一个解决方案似乎有效,我无法弄清楚我做错了什么。
我的数据框中包含inf值的数据。
print [x for x in train_x['meh'] if not np.isfinite(x)]
返回
[inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf]
我试过
train_x.replace([numpy.inf, -numpy.inf], numpy.nan)
但这不会将inf
转换为nan
。
接下来我试了
train_x[np.isinf(train_x)] = np.NaN
...确实将inf
转换为nan
,但即使nan
train_x.dropna()
行
基本上,我需要删除inf
和nan
行。
答案 0 :(得分:0)
好像你可以使用布尔索引
train_x[np.isfinite(train_x) & train_x.notnull()]
您实际上甚至不需要train_x.notnull()
。
答案 1 :(得分:0)
我使用
创建了一个DataFrame df = pd.DataFrame({'val1': [1.1, 3.3, 2.2, np.inf], 'val2': [2.2, 6.6, np.inf, 4.4]})
导致
val1 val2
0 1.100000 2.200000
1 3.300000 6.600000
2 2.200000 inf
3 inf 4.400000
如果您在多个列中有inf
,则可以使用
NaN
df.applymap(lambda x: np.nan if np.isinf(x) else x)
结果是
val1 val2
0 1.1 2.2
1 3.3 6.6
2 2.2 NaN
3 NaN 4.4
如果只在一列上有此问题(在此示例中,在列val1上),则可以执行
df.val1.apply(lambda x: np.nan if np.isinf(x) else x)