我在python中有一个数据帧df
Age product
------------------
21 apple
11 orange
eighteen mango
35 pineapple
35 122
NA apple
30 -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
此方法仅检查数值,如果需要检查整数,则需要额外的逻辑。