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
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 不被支持。
示例
>>> 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