我在python上有以下数据集
import pandas as pd
bcw = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data', header=None)
24之类的行有缺失值:
1057013,8,4,5,1,2,?,7,3,1,4
在column 7
上,有一个'?'
,我想放弃这一行。我怎样才能做到这一点?
答案 0 :(得分:2)
针对column: 7
中的具体示例:
bcw = bcw[bcw[7] != '?']
但是,我实际下载了数据集并在column: 6
中找到了相同的异常,因此此代码将查看'?'
的所有列并删除行:
for col in bcw.columns:
if bcw[col].dtype != 'int64':
print "Removing possible '?' in column %s..." % col
bcw = bcw[bcw[col] != '?']
>>> Removing possible '?' in column 6...
答案 1 :(得分:1)
您可以尝试
import numpy as np
irow = np.all(np.array(bcw) != '?', axis=1)
bcw = bcw.ix[irow, :]
np.array(bcw) != '?'
会产生一个布尔数组(我尝试直接将bcw
与'?'
进行比较,但会出现错误,因此我首先将其转换为np.array
,这表明其位置是不是'?'
。
np.all(xx, axis=1)
将2维布尔数组转换为1维,axis=1
表示逐行:当且仅当行中的所有元素都是True
时,相应的元素在结果数组中是True
。现在我们得到一个布尔索引数组,指示不包含'?'
的行。
由于irow
是布尔索引数组,您还可以使用以下表单索引bcw
:
bcw.ix[irow]
bcw[irow]
但如果irow
是整数索引数组而不是布尔值,则最后一个表单将导致错误。我对熊猫数据框索引感到困惑,所以如果有人告诉我,我会感激不尽。