2017-09-29 60 views
0

扯皮我有Python中的數據幀DF數據在Python

Age  product 
------------------ 
21   apple 
11   orange 
eighteen mango 
35   pineapple 
35   122 
NA   apple 
30   -1 

我只想年齡數值列,我怎麼會丟棄哪些不是整數的行。

同樣在產品中,我只需要字符串,我將如何刪除不是字符串的值。

回答

3

檢查數值的相當安全的方法是使用pd.isnumeric(..., errors='coerce'),然後檢查空值;由於pandas可以在單個列中包含不同的數據類型,str.isnumeric返回NaN如果該值是實際數值類型和因爲Python不它不識別負數爲數字:

isnumeric = lambda s: pd.to_numeric(s, errors='coerce').notnull() 
df[isnumeric(df['Age']) & ~isnumeric(df['product'])] 

# Age product 
#1 21  apple 
#2 11  orange 
#4 35 pineapple 

此方法僅檢查數值,如果需要檢查整數,則需要額外的邏輯。

+0

如果我只想要字符串,我將如何更改邏輯。 –

+1

字符串是一個非常廣泛的概念。只要它們被正確引用,它可以是從'123','abc'到''[1,2,3]''甚至是'{a:b}'的任何東西。如果你的意思是字符串等特殊字符,你需要像'str.contains(...)'和'str.match(...)'這樣的正則表達式和函數。對於字母,你需要像'[a-zA-Z] +'那樣的正則表達式。並像'df.product.str.match(「[a-zA-Z] + $」)一樣使用它。 – Psidom