mars.dataframe.DataFrame.align#

DataFrame.align(other, join: 字符串 = 'outer', axis: 可选[联合[int, 字符串]] = None, level: 可选[联合[整型, 字符串]] = None, copy: 布尔型 = True, fill_value: 可选[任何] = None, method: 可选[字符串] = None, limit: 可选[int] = None, fill_axis: 联合[int, 字符串] = 0, broadcast_axis: 可选[联合[int, 字符串]] = None)#

使用指定的连接方法对齐两个对象的轴。

为每个轴索引指定连接方法。

Parameters
  • 其他 (DataFrameSeries) –

  • join ({'outer', 'inner', 'left', 'right'}, default 'outer') –

  • axis (允许的轴 另一个对象的 ,默认为 None) – 在索引(0)、列(1)或两者(None)上对齐。

  • 级别 (整数级别名称, 默认为 None) – 在一个级别上进行广播,匹配传入的 MultiIndex 级别上的索引值。

  • copy (bool, 默认值为 True) – 始终返回新对象。如果 copy=False 且不需要重新索引,则返回原始对象。

  • fill_value (标量, 默认为 np.NaN) – 用于缺失值的值。默认为 NaN,但可以是任何“兼容”的值。

  • 方法 ({'backfill', 'bfill', 'pad', 'ffill', 无}, 默认 无) –

    用于填补重新索引的系列中的空洞的方法:

    • pad / ffill: 将最后一个有效观察值向前传播到下一个有效值。

    • backfill / bfill: 使用下一个有效观察值来填补空缺。

  • limit (int, default None) – 如果指定了方法,这是向前/向后填充的最大连续 NaN 值的数量。换句话说,如果有一个连续 NaN 超过这个数量的间隙,它将仅会部分填充。如果未指定方法,这是在整个轴上将填充 NaN 的最大条目数。如果不是 None,则必须大于 0。

  • fill_axis ({0'index', 1'columns'}, 默认 0) – 填充轴,方法和限制。

  • broadcast_axis ({0'index', 1'columns'}, 默认值为 None) – 在此轴上广播值,若对齐两个不同维度的对象。

备注

当前参数 level 不被支持。

Returns

(left, right) – 对齐的对象。

Return type

(数据框, 其他类型)

示例

>>> import mars.tensor as mt
>>> import mars.dataframe as md
>>> df = md.DataFrame(
...     [[1, 2, 3, 4], [6, 7, 8, 9]], columns=["D", "B", "E", "A"], index=[1, 2]
... )
>>> other = md.DataFrame(
...     [[10, 20, 30, 40], [60, 70, 80, 90], [600, 700, 800, 900]],
...     columns=["A", "B", "C", "D"],
...     index=[2, 3, 4],
... )
>>> df.execute()
   D  B  E  A
1  1  2  3  4
2  6  7  8  9
>>> other.execute()
    A    B    C    D
2   10   20   30   40
3   60   70   80   90
4  600  700  800  900

按列对齐:

>>> left, right = df.align(other, join="outer", axis=1)
>>> left.execute()
   A  B   C  D  E
1  4  2 NaN  1  3
2  9  7 NaN  6  8
>>> right.execute()
    A    B    C    D   E
2   10   20   30   40 NaN
3   60   70   80   90 NaN
4  600  700  800  900 NaN

我们还可以对索引进行对齐:

>>> left, right = df.align(other, join="outer", axis=0)
>>> left.execute()
    D    B    E    A
1  1.0  2.0  3.0  4.0
2  6.0  7.0  8.0  9.0
3  NaN  NaN  NaN  NaN
4  NaN  NaN  NaN  NaN
>>> right.execute()
    A      B      C      D
1    NaN    NaN    NaN    NaN
2   10.0   20.0   30.0   40.0
3   60.0   70.0   80.0   90.0
4  600.0  700.0  800.0  900.0

最后,默认 axis=None 将对齐索引和列:

>>> left, right = df.align(other, join="outer", axis=None)
>>> left.execute()
     A    B   C    D    E
1  4.0  2.0 NaN  1.0  3.0
2  9.0  7.0 NaN  6.0  8.0
3  NaN  NaN NaN  NaN  NaN
4  NaN  NaN NaN  NaN  NaN
>>> right.execute()
       A      B      C      D   E
1    NaN    NaN    NaN    NaN NaN
2   10.0   20.0   30.0   40.0 NaN
3   60.0   70.0   80.0   90.0 NaN
4  600.0  700.0  800.0  900.0 NaN