2017-09-29 62 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