lance.LanceDataset.merge(data_obj: ReaderLike, left_on: str, right_on: str | None = None, schema=None)

将另一个数据集合并到当前数据集中。

执行左连接操作,其中数据集作为左表,data_obj作为右表。存在于数据集但不在左表中的行将被填充为null值,除非Lance不支持某些类型的null值,这种情况下会抛出错误。

Parameters:
data_obj : Reader-like

要合并的数据。可接受的类型包括: - Pandas DataFrame、Pyarrow Table、Dataset、Scanner、 Iterator[RecordBatch] 或 RecordBatchReader

left_on : str

数据集中用于连接的列名。

right_on : str or None

数据对象中用于连接的列名。如果为None,则默认为left_on。

示例

>>> import lance
>>> import pyarrow as pa
>>> df = pa.table({'x': [1, 2, 3], 'y': ['a', 'b', 'c']})
>>> dataset = lance.write_dataset(df, "dataset")
>>> dataset.to_table().to_pandas()
   x  y
0  1  a
1  2  b
2  3  c
>>> new_df = pa.table({'x': [1, 2, 3], 'z': ['d', 'e', 'f']})
>>> dataset.merge(new_df, 'x')
>>> dataset.to_table().to_pandas()
   x  y  z
0  1  a  d
1  2  b  e
2  3  c  f

另请参阅

LanceDataset.add_columns

通过逐批计算添加新列。