如何select只在熊猫data.frame中完成
How to select only complete in a panda data.frame
我在 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
上,有一个 '?'
,我想删除此行。我怎样才能做到这一点?
对于 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...
你可以试试
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
是Integer index array而不是Boolean one,最后的形式会导致错误。我对 pandas 数据帧索引有些困惑,所以如果有人告诉我,我将不胜感激。
我在 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
上,有一个 '?'
,我想删除此行。我怎样才能做到这一点?
对于 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...
你可以试试
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
是Integer index array而不是Boolean one,最后的形式会导致错误。我对 pandas 数据帧索引有些困惑,所以如果有人告诉我,我将不胜感激。