跳过genfromtxt中缺少值的行

时间:2013-11-15 17:26:19

标签: python csv file-io numpy genfromtxt

我如何加载csv。至少在单元格为空时,将文件转换为跳过行的数组? 我的csv文件很大(超过1000行和14列):

1;4;3
;1;3
;;6
3;4;7

我想跳过第2行和第3行,因为它们缺少值(x; 1; 3)(x; x; 6) 完成的所有其他行应写入数组...

这些行(每行中包含“完整”信息应写入矩阵(数组)

M = np.genfromtxt(file.csv, delimiter=";",dtype=float)

1 个答案:

答案 0 :(得分:3)

在所有行中读取可能更容易,然后只保留那些没有丢失数据的行。

>>> M = np.genfromtxt("miss.csv", delimiter=";", dtype=float)
>>> M
array([[  1.,   4.,   3.],
       [ nan,   1.,   3.],
       [ nan,  nan,   6.],
       [  3.,   4.,   7.]])
>>> M = M[~np.isnan(M).any(axis=1)]
>>> M
array([[ 1.,  4.,  3.],
       [ 3.,  4.,  7.]])

(这假设您不会将nan作为miss.csv中要保留的值。如果这样做,则会有点棘手。)