我有两个arrow:Tables,其中表1是:
colA colB
1 2
3 4表2是,
colC colD
i j
k l其中,表1和表2的行数相同。我想和他们并肩作战
colA colB colC coldD
1 2 i j
3 4 k l我试图按如下方式使用arrow::ConcatenateTables,但输出中有一堆空值(未显示)
t1 = ... \\ std::shared_ptr<arrow::Table>
t2 = ... \\ std::shared_ptr<arrow::Table>
arrow::ConcatenateTablesOptions options;
options.unify_schemas = true;
options.field_merge_options.promote_nullability = true;
auto merged = arrow::ConcatenateTables({t1, t2}, options);如何获得预期的输出?
发布于 2022-02-20 14:15:45
arrow::ConcatenateTables只进行逐行级联。没有针对列级级联的内置辅助方法,但是很容易自己创建一个(如果这样做不完全正确,我现在还没有在编译器面前):
std::shared_ptr<arrow::Table> CombineTables(const Table& left, const Table& right) {
std::vector<std::shared_ptr<arrow::ChunkedArray>> columns = left.columns();
const std::vector<std::shared_ptr<arrow::ChunkedArray>>& right_columns = right.columns();
columns.insert(columns.end(), right_columns.begin(), right_columns.end());
std::vector<std::shared_ptr<arrow::Field>> fields = left.fields();
const std::vector<std::shared_ptr<arrow::Field>>& right_fields = right.fields();
fields.insert(fields.end(), right_fields.begin(), right_fields.end());
return arrow::Table::Make(arrow::schema(std::move(fields)), std::move(columns));
}https://stackoverflow.com/questions/71183352
复制相似问题