Python 如何在panda data.frame中选择“仅完成”

Python 如何在panda data.frame中选择“仅完成”,python,machine-learning,dataframe,Python,Machine Learning,Dataframe,我在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 在第7列,有一个“?”,我想删除这一行。我怎样才能做到这

我在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

第7列
,有一个
“?”
,我想删除这一行。我怎样才能做到这一点

有关
列中的具体示例:7

bcw = bcw[bcw[7] != '?']
但是,我实际上下载了数据集,并在
列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...
你可以试试

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)
将二维布尔数组转换为一维,并且
axis=1
表示按行:当且仅当一行中的所有元素均为
True
,则结果数组中的对应元素为
True
。现在我们得到一个布尔索引数组,它指示不包含
'?'
的行

由于
irow
是布尔索引数组,因此您也可以使用以下表格索引
bcw

bcw.ix[irow]
bcw[irow]

但是如果
irow
是整数索引数组而不是布尔数组,则最后一个表单将导致错误。我对pandas数据帧索引有些困惑,所以如果有人告诉我,我会很感激。

谢谢,我从python开始,仍然在为这些小事情而挣扎,但这正是我想要的。