Python中的数据争夺

时间:2017-09-29 02:03:17

标签: python pandas scikit-learn data-cleaning

我在python中有一个数据帧df

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

我只想要年龄中的数字列,我如何删除不是整数的行。

同样在产品中,我只需要字符串,我如何删除不是字符串的值。

1 个答案:

答案 0 :(得分: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

此方法仅检查数值,如果需要检查整数,则需要额外的逻辑。