错误:无法解析字符串" *"在位置6116 - 将对象类型转换为Int - Pandas

时间:2017-07-18 21:14:29

标签: python pandas dataframe types

这个问题已经在很多线索中被提出并且已经为其他人工作,但不适合我。我正在尝试将object数据类型转换为int以通过聚合执行组。 以下是我尝试过的以及到目前为止我遇到的错误(我使用的是python 3) 根据此链接,我尝试了these two

df['my_var'] = df['my_var'].astype(str).astype(int)
df['my_var'] = df['my_var'].astype(int)

两者都有相同的错误:

  

ValueError:基数为10的int()的无效文字:' *'

然后我tried

df['my_var'] = pd.to_numeric(df['my_var'])

我收到了一个错误:

  

ValueError:无法解析字符串" *"在6116位置

这就是dtypes的样子,

print (df.dtypes)
my_var object
dtype: object

我知道一些类似的问题被投了票,但是,我没有成功使用这些答案。这是版本错误吗?我发现很难理解这个错误。任何帮助或建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

我用0代替任何不是数字的东西,但你可以使用对你有意义的任何其他值,例如-999999(显然不是建议的做法,只是一个例子)

pd.to_numeric(df.my_var, errors='coerce').fillna(0).astype(int)

答案 1 :(得分:0)

在收到#DYZ和#MaxU的建议后,由于我的DataFrame中的一行中有特殊字符*,这是一个错误。 (错误信息很明显)

根据建议,使用,

df[df['my_var']=='*']

df.loc[pd.to_numeric(df['my_var'], errors='coerce').isnull()]

我发现了特殊角色的确切位置。然后使用正则表达式方法使用此thread去除特殊字符。