Python 如何在panda data.frame中选择“仅完成”
我在python上有以下数据集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列,有一个“?”,我想删除这一行。我怎样才能做到这
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开始,仍然在为这些小事情而挣扎,但这正是我想要的。