如何将OML DataFrame中的Float列转换为Integer列?
解决OML DataFrame Float列转Integer列的问题
你遇到的问题是因为OML DataFrame的列对象是Oracle Machine Learning专属类型(比如这里的Float对象),它没有Pandas Series的astype方法,得用OML支持的操作方式实现类型转换,以下是两种可行方案:
方案1:使用SQL CAST函数(推荐,适合大数据量)
利用OML支持SQL表达式的特性,直接在数据库端完成转换,效率更高:
import pandas as pd import oml data = {"id" : [1, 2, 3, 4, 5], "val" : [4.0, 3.0, 6.0, 7.0, 5.0]} df = pd.DataFrame(data) DF = oml.push(df) # 新增整数列val_int DF = DF.assign(val_int=oml.sql("CAST(val AS INTEGER)"))
方案2:拉回Pandas处理(适合小数据量)
如果数据量不大,可以先把OML DataFrame拉回本地Pandas DataFrame处理,再重新推送到OML:
import pandas as pd import oml data = {"id" : [1, 2, 3, 4, 5], "val" : [4.0, 3.0, 6.0, 7.0, 5.0]} df = pd.DataFrame(data) DF = oml.push(df) # 拉回本地处理 local_df = DF.pull() local_df["val_int"] = local_df["val"].astype(int) # 重新推送到OML DF = oml.push(local_df)
内容的提问来源于stack exchange,提问作者Joe Hahn
相关产品推荐
相关产品推荐

