这个问题已经在很多线索中被提出并且已经为其他人工作,但不适合我。我正在尝试将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
我知道一些类似的问题被投了票,但是,我没有成功使用这些答案。这是版本错误吗?我发现很难理解这个错误。任何帮助或建议将不胜感激。
答案 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去除特殊字符。