DataFrame.align(other, join='outer', axis=None, level=None, copy=True, fill_value=None, method=None, limit=None, fill_axis=0, broadcast_axis=None) 源代码
使用指定的每个轴索引的连接方法,将轴上的两个对象对齐。
参数: | other : join : {‘outer’, ‘inner’, ‘left’, ‘right’}, 默认 ‘outer’ axis : 允许另一个对象的axis, 默认 对齐 index (0), columns (1), 或 both (None) level : 跨level广播,匹配传递的多索引level上的索引值 copy : 始终返回新对象。如果 则返回原始对象。 fill_value : 用于缺失值的值。默认为 method : {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, 默认 用于reindexed Series pad的填充孔的方法/ffill: 将最后有效观察向前传播到下一个有效backfill / bfill: 使用NEXT有效观察来填补空白 limit : 如果指定了method,则这是向前/向后填充的连续NaN值的最大数量。 换句话说,如果存在超过此数量的连续NaN的间隙, 则仅部分填充。如果未指定method, 则这是沿整个轴填充NaN的最大条目数。 如果不是None,则必须大于0。 fill_axis : {0 or ‘index’, 1 or ‘columns’}, 默认 0 Filling axis, method 或 limit broadcast_axis : {0 或 ‘index’, 1 或 ‘columns’}, 默认 如果对齐两个不同尺寸的对象,则沿此axis广播值 |
返回: | (left, right) : (DataFrame,其他类型) 对齐的对象 |
例如,
df1 = pd.DataFrame([[1,2,3,4], [6,7,8,9]], columns=['D', 'B', 'E', 'A'], index=[1,2])
df2 = pd.DataFrame([[10,20,30,40], [60,70,80,90], [600,700,800,900]], columns=['A', 'B', 'C', 'D'], index=[2,3,4])
print(df1)
D B E A
1 1 2 3 4
2 6 7 8 9
print(df2)
A B C D
2 10 20 30 40
3 60 70 80 90
4 600 700 800 900
对齐这两个DataFrame,按列对齐(align=1),并对列标签执行外部连接(join='outer'):
a1, a2 = df1.align(df2, join='outer', axis=1)
print(a1)
print(a2)
A B C D E
1 4 2 NaN 1 3
2 9 7 NaN 6 8
A B C D E
2 10 20 30 40 NaN
3 60 70 80 90 NaN
4 600 700 800 900 NaN
参数改为join='outer'和axis=None
a1, a2 = df1.align(df2, join='right', axis=None)
print(a1)
print(a2)
A B C D
2 9.0 7.0 NaN 6.0
3 NaN NaN NaN NaN
4 NaN NaN NaN NaN
A B C D
2 10 20 30 40
3 60 70 80 90
4 600 700 800 900
参数改为join='inner'和axis=1
a1, a2 = df1.align(df2, join='inner', axis=1)
print(a1)
print(a2)
D B A
1 1 2 4
2 6 7 9
D B A
2 40 20 10
3 90 70 60
4 900 700 600