我正在使用大量数据,但每隔一段时间我都会使用nan而不是值。我需要以某种方式删除它们。以下是我的数据集
的示例1 2
3 4
nan 5
6 7
8 nan
9 10
我想删除坏数据:
1 2
3 4
6 7
9 10
答案 0 :(得分:5)
如果您只是使用numpy,请使用逻辑索引:
import numpy as np
x = np.array([[ 1., 2.],
[ 3., 4.],
[ np.nan, 5.],
[ 6., 7.],
[ 8., np.nan],
[ 9., 10.]])
# find which rows contain nans
ix = np.any(np.isnan(x), axis=1)
# remove them
x = x[~ix]
给出了:
array([[ 1., 2.],
[ 3., 4.],
[ 6., 7.],
[ 9., 10.]])
这适用于任意列数的数组:如果一行在至少一列中包含NaN,则会将其删除。
或者,如果您正在使用pandas
,只需使用dropna
:
import pandas as pd
df = pd.DataFrame(x)
df.dropna()
答案 1 :(得分:1)
你可以这样做:
my_numpy_arr = my_numpy_arr[(my_numpy_arr==my_numpy_arr).all(1)]