如何在熊猫中将varchar转换为int / float

时间:2020-06-18 04:56:27

标签: python pandas

我的数据来自mysql表。

id,revenue,cost,statevarchar列。

  • 我需要对仅是状态的分类变量进行get_dummies(一种热编码)

  • 如果它直接从csv(pd.read_csv)读取,我将id,revenue,cost的dtypes作为int / float,将state的dtypes作为对象

我的问题是如何将对象的数字和对象转换为int64 / float类型

  • 有一种strange之类的符号,可能会出现在收入中,但我仍然希望此列为数字

我做了什么

  • 要立即解决此问题,请直接在数据库中将varchar更改为int并解决问题

但是我需要在熊猫里做

df.apply(pd.to_numeric, errors='coerce').fillna(df)仍然像id,revenue,cost这样的int / float列未更改dtype

1 个答案:

答案 0 :(得分:0)

我认为首先是pd.read_csv之后的necesarry测试dtype:

print (df.dtypes)

然后将列转换为数字,但不能将丢失的值替换为原始值,因为获取混合值-带字符串的数字:

cols = ['id','revenue','cost']
df[cols] = df[cols].apply(pd.to_numeric, errors='coerce')