我有一个对象功能“出版年”,我想将其转换为数字类型。该功能包含诸如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_numericfillna一起使用:

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)是您选择的默认替换。

10-08 01:50