我试图使用标准方法在atoti中生成一个表:
table = session.read_pandas( DF, keys = ["col1",...."coln"], table_name = "My_Table")但是,它会抛出与读取一个列有关的错误,该列由numpy数组组成,其中数组中的值是浮动的。
完整的错误如下:
AtotiJavaException:无法使数组类型为非空。字段类型: FieldType(dataType=156032 -> Nullable double[],dataClass=class [D,defaultValueHolder=MultiTypeCell{codec=NULL,value=null})
发布于 2022-08-17 18:24:35
不是100%确定,因为您的代码是不完整的,但是您可能会得到这个错误,因为您试图将数组列添加到表的键中。
然而:
注意:从atoti 0.7.0开始,列被认为是空的当且仅当column.default_value is None。
例如,这起作用是:
import atoti as tt
import numpy as np
import pandas as pd
df = pd.DataFrame(
columns=["id", "scalar", "array"],
data=[
("abc", 1.0, np.array([1.0, 2.0])),
("def", 2.0, np.array([2.0, 3.0])),
],
)
session = tt.Session()
table = session.read_pandas(
df,
table_name="example",
keys=["id"],
)
data_types = {name: table[name].data_type for name in table.columns}
assert data_types == {
"id": "String",
"scalar": "double",
"array": "double[]",
}
rows = table.head()
pd.testing.assert_frame_equal(
rows,
pd.DataFrame(
columns=["scalar", "array"],
data=[
(1.0, [1.0, 2.0]),
(2.0, [2.0, 3.0]),
],
index=pd.Index(["abc", "def"], name="id"),
),
)但是将keys=["id"]替换为keys=["id", "array"]将导致Cannot make an array type non nullable错误。
https://stackoverflow.com/questions/73392734
复制相似问题