我正在尝试在一次手术后合并两个数据帧。
import pandas as pd
import h2o
from h2o.automl import H2OAutoML
h2o.init()
import pandas as pd
import numpy as np
support = "splvl.csv"
data = h2o.import_file(support)
df1 = data[data['X'] == 0]
df2 = data[data['X'] == 1]
df1.impute("A", method = "mean", by = ["B", "C"])
df1.impute("Q", method = "mode", by = ["B", "C"])
df2.impute("A", method = "mean", by = ["B", "C"])
df2.impute("Q", method = "mode", by = ["B", "C"])
df1["X"].table()
df2["X"].table()
df3 = df2.merge(df1)
h2o.export_file(df3, path = "merged.csv", force=True, parts=1)
执行导出到CSV命令时,出现以下错误
H2OServerError:HTTP 500服务器错误: 服务器错误water.util.DistributedException: 错误:来自/127.0.0.1:54321的DistributedException:'不允许对字符串向量进行操作。' 要求:无
df3["X"].table()
服务器错误water.exceptions.H2OKeyNotFoundArgumentException: 错误:找不到参数“ key”的对象“ py_13_sid_95bb” 请求:GET / 3 / Frames / py_13_sid_95bb 参数:{'row_count':'10','row_offset':'0','column_count':'-1','full_column_count':'-1','column_offset':'0'}
当我尝试在合并的数据框中打印值计数时出现此错误
答案 0 :(得分:1)
第一个问题很可能是您的"X"
是字符串类型,您可以通过运行df1["X"].types
进行检查。您可以将其转换为因子列,然后通过执行table()
来使用df1["X"]=df1["X"].asfactor()
。
看到第二个错误的原因可能是因为运行d3
时创建df3 = df2.merge(df1)
失败。
我建议您验证列数据类型,修复那些需要转换为因子的数据,然后再次尝试合并。