aliyun / alibabacloud-odps-maxframe-client

Apache License 2.0
3 stars 1 forks source link

SDK: apply followed by setitem reports ValueError: Columns must be same length as key #26

Closed ericpai closed 1 week ago

ericpai commented 1 week ago
df = md.DataFrame({"a": [1, 2, 3], "b": [1, 2, 3], "c": [1,2,3]})

keys = [1, 2]

def f(x, keys):
    if x["a"] in keys:
        return [1, 0]
    else:
        return [0, 1]

df[["g", "h"]] = df[["a"]].apply(
    f,
    output_type="dataframe",
    dtypes=pd.Series(["int64", "int64"]),
    axis=1,
    result_type="expand",
    keys=keys,
)
print(df.dtypes)

Error:

File ~/workspace/python/maxframe/core/maxframe/dataframe/indexing/setitem.py:71, in DataFrameSetitem.__call__(self, target, value)
     [69](https://file+.vscode-resource.vscode-cdn.net/Users/ericpai/workspace/notebook/test-demo/~/workspace/python/maxframe/core/maxframe/dataframe/indexing/setitem.py:69) elif isinstance(value, (pd.DataFrame, DATAFRAME_TYPE)):
     [70](https://file+.vscode-resource.vscode-cdn.net/Users/ericpai/workspace/notebook/test-demo/~/workspace/python/maxframe/core/maxframe/dataframe/indexing/setitem.py:70)     if len(self.indexes) != value.shape[1]:  # pragma: no cover
---> [71](https://file+.vscode-resource.vscode-cdn.net/Users/ericpai/workspace/notebook/test-demo/~/workspace/python/maxframe/core/maxframe/dataframe/indexing/setitem.py:71)         raise ValueError("Columns must be same length as key")
     [73](https://file+.vscode-resource.vscode-cdn.net/Users/ericpai/workspace/notebook/test-demo/~/workspace/python/maxframe/core/maxframe/dataframe/indexing/setitem.py:73)     value = asframe(value)
     [74](https://file+.vscode-resource.vscode-cdn.net/Users/ericpai/workspace/notebook/test-demo/~/workspace/python/maxframe/core/maxframe/dataframe/indexing/setitem.py:74)     value_dtype = pd.Series(list(value.dtypes), index=self.indexes)
ericpai commented 1 week ago

Fixed in v1.0.0