您可以使用DataFrame.isin()方法:
In [34]: x
Out[34]:
GRSSWK HAPPY HIQUL11D MARDY6 MARSTA PUBLICR QHEALTH1 RELIG11
0 -9 9 -9 2 5 -9 -9 2
1 -9 8 -9 2 5 -9 -9 2
2 -9 -9 -9 2 4 -9 4 2
3 481 8 1 1 2 2 3 2
4 885 -9 1 1 2 2 1 2
In [38]: x = x.ix[~x.isin([-9, -8]).any(1)]
In [39]: x
Out[39]:
GRSSWK HAPPY HIQUL11D MARDY6 MARSTA PUBLICR QHEALTH1 RELIG11
3 481 8 1 1 2 2 3 2
說明:
In [42]: x.isin([-9, -8])
Out[42]:
GRSSWK HAPPY HIQUL11D MARDY6 MARSTA PUBLICR QHEALTH1 RELIG11
0 True False True False False True True False
1 True False True False False True True False
2 True True True False False True False False
3 False False False False False False False False
4 False True False False False False False False
In [43]: x.isin([-9, -8]).any(1)
Out[43]:
0 True
1 True
2 True
3 False
4 True
dtype: bool
UPDATE:有條件地選擇列:
In [86]: x[x.columns[~x.isin([-9, -8]).any()]]
Out[86]:
MARDY6 MARSTA RELIG11
0 2 5 2
1 2 5 2
2 2 4 2
3 1 2 2
4 1 2 2
說明:
In [87]: x.columns[~x.isin([-9, -8]).any()]
Out[87]: Index(['MARDY6', 'MARSTA', 'RELIG11'], dtype='object')
In [88]: x.isin([-9, -8]).any()
Out[88]:
GRSSWK True
HAPPY True
HIQUL11D True
MARDY6 False
MARSTA False
PUBLICR True
QHEALTH1 True
RELIG11 False
dtype: bool
謝謝。所以..任何()或任何(0)而不是任何(1)會告訴我,如果這些值是在任何列而不是行? – 85sph
那麼我將如何去除包含值但不包含行的列?我沒有理由這樣做,但我現在很感興趣。 – 85sph
@ 85sph,更新了我的答案... – MaxU