我有一个对象功能“出版年”,我想将其转换为数字类型。该功能包含诸如2009、2018、1995,... DK-Something等值,...我想我需要在功能中查找所有字符串并将其替换为某些默认值,但实际上我不知道该怎么做。
我试过了:
data = data['Year-Of-Publication'].astype(int)
...引起:
ValueError:以10为底的int()的无效文字:'DK Publishing
Inc'
帮助将不胜感激。谢谢。
编辑:
该属性如下所示:
books['Year-Of-Publication'].head()
0 2002
1 2001
2 1991
3 1999
4 1999
Name: Year-Of-Publication, dtype: object
我想将其转换为数字类型,但问题是它也包含字符串,例如值“ DK Publishing Inc”。
最佳答案
将pandas.to_numeric
与fillna
一起使用:
import pandas as pd
s = pd.Series([2009, 2018, 1995, 'DK-Something'])
pd.to_numeric(s, 'coerce').fillna(-1, downcast = 'infer')
输出:
0 2009
1 2018
2 1995
3 -1
dtype: int64
这里
fillna
的值(即-1
)是您选择的默认替换。