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,其他类型) 对齐的对象 |
例如,
1)使用不同的 join 参数
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3]}, index=['a', 'b', 'c'])
df2 = pd.DataFrame({'B': [4, 5]}, index=['b', 'c'])
# 使用 'inner' join
df1_inner, df2_inner = df1.align(df2, join='inner')
print("\n使用 'inner' join 对齐后的 DataFrame df1:")
print(df1_inner)
print("\n使用 'inner' join 对齐后的 DataFrame df2:")
print(df2_inner)
2)对齐列
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3]}, index=['a', 'b', 'c'])
df2 = pd.DataFrame({'A': [4, 5, 6], 'B': [7, 8, 9]}, index=['a', 'b', 'c'])
# 对齐列
df1_aligned, df2_aligned = df1.align(df2, axis=1)
print("\n对齐列后的 DataFrame df1:")
print(df1_aligned)
print("\n对齐列后的 DataFrame df2:")
print(df2_aligned)
3)使用 fill_value 参数
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3]}, index=['a', 'b', 'c'])
df2 = pd.DataFrame({'B': [4, 5]}, index=['b', 'c'])
# 对齐时使用 fill_value 参数
df1_aligned, df2_aligned = df1.align(df2, fill_value=0)
print("\n使用 fill_value 参数对齐后的 DataFrame df1:")
print(df1_aligned)
print("\n使用 fill_value 参数对齐后的 DataFrame df2:")
print(df2_aligned)
4)使用示例
import pandas as pd
# 创建第一个DataFrame
df1 = pd.DataFrame([[1, 2, 3, 4], [6, 7, 8, 9]], columns=['D', 'B', 'E', 'A'], index=[1, 2])
print("DataFrame df1:")
print(df1)
# 创建第二个DataFrame
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("\nDataFrame df2:")
print(df2)
# 按列对齐并执行外部连接
a1, a2 = df1.align(df2, join='outer', axis=1)
print("\n按列对齐并执行外部连接后的 DataFrame a1:")
print(a1)
print("\n按列对齐并执行外部连接后的 DataFrame a2:")
print(a2)
# 按所有轴对齐并执行右连接
a1, a2 = df1.align(df2, join='right', axis=None)
print("\n按所有轴对齐并执行右连接后的 DataFrame a1:")
print(a1)
print("\n按所有轴对齐并执行右连接后的 DataFrame a2:")
print(a2)
# 按列对齐并执行内部连接
a1, a2 = df1.align(df2, join='inner', axis=1)
print("\n按列对齐并执行内部连接后的 DataFrame a1:")
print(a1)
print("\n按列对齐并执行内部连接后的 DataFrame a2:")
print(a2)