我的数据来自mysql
表。
id,revenue,cost,state
是varchar
列。
我需要对仅是状态的分类变量进行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
答案 0 :(得分:0)
我认为首先是pd.read_csv
之后的necesarry测试dtype:
print (df.dtypes)
然后将列转换为数字,但不能将丢失的值替换为原始值,因为获取混合值-带字符串的数字:
cols = ['id','revenue','cost']
df[cols] = df[cols].apply(pd.to_numeric, errors='coerce')