python从数据集中删除特殊值

时间:2018-03-04 21:06:54

标签: python pandas

我有大量的电影数据集。 我正在使用Pandas包。

在变量“预算”(是一种对象类型)中,通常有“?” charachter。

现在我要删除所有包含“?”的电影在预算变量中。

最后,我想将预算变量转换为整数,并使用变量“quality”运行回归。 Picture of the data set 我尝试了一种方法,但它没有成功。 而“?”在df.budget中:df.remove(?)

1 个答案:

答案 0 :(得分:3)

比较由!=创建的不等于(numpy arrayvalues或首先将所有值转换为string并添加all以进行全部检查{{ 1}}每行的值,最后按boolean indexing过滤:

True

<强>详情:

df = pd.DataFrame({'A':list('abcde?'),
                   'B':[4,5,4,5,5,4],
                   'C':[7,8,9,4,2,3],
                   'D':[4,3,5,7,1,0],
                   'E':[5,3,6,9,2,4],
                   'F':list('aaabbb')})

print (df)
   A  B  C  D  E  F
0  a  4  7  4  5  a
1  b  5  8  3  3  a
2  c  4  9  5  6  a
3  d  5  4  7  9  b
4  e  5  2  1  2  b
5  ?  4  3  0  4  b

df = df[(df.values != '?').all(axis=1)]
#alternative
#df = df[(df.astype(str) != '?').all(axis=1)]
print (df)
   A  B  C  D  E  F
0  a  4  7  4  5  a
1  b  5  8  3  3  a
2  c  4  9  5  6  a
3  d  5  4  7  9  b
4  e  5  2  1  2  b

编辑:

print (df.values != '?')
[[ True  True  True  True  True  True]
 [ True  True  True  True  True  True]
 [ True  True  True  True  True  True]
 [ True  True  True  True  True  True]
 [ True  True  True  True  True  True]
 [False  True  True  True  True  True]]

print ((df.values != '?').all(axis=1))
[ True  True  True  True  True False]