添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
本内容来自:https://gairuo.com

pandas 的 align() 对象方法可以将两个 DataFrame 和 Series 数据对齐,对齐可以按指定的轴进行,还可以指定连接方式。

我们通过例子直观感受一下对齐操作。

df = pd.DataFrame(
    [[1, 2, 3, 4],
     [6, 7, 8, 9]],
    columns=["D", "B", "E", "A"],
    index=[1, 2]
other = pd.DataFrame(
    [[10, 20, 30, 40], [60, 70, 80, 90], [600, 700, 800, 900]],
    columns=["A", "B", "C", "D"],
    index=[2, 3, 4],
   D  B  E  A
1  1  2  3  4
2  6  7  8  9
other
    A    B    C    D
2   10   20   30   40
3   60   70   80   90
4  600  700  800  900

我们定义了两个 DataFrame,下面按列对齐:

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

对齐操作返回两个 DataFrame,分别是左右两个原数据上将对齐对方数据有自己没有的数据以缺失值形式填充,同时保持自己数据的长度(因为我们指定 axis=1 按列对齐)。

我们也可以在索引上对齐:

left, right = df.align(other, join="outer", axis=0)
    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
    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)
     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
       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

Series 也支持这些操作,不过 axis 参数是固定的,不需要额外指定。

通过上边的示例,我们总结 align() 对象方法的语法为:

align(self, other, join: 'str' = 'outer',
      axis: 'Axis | None' = None,
      level: 'Level | None' = None,
      copy: 'bool' = True, fill_value=None,
      method: 'str | None' = None, limit=None,
      fill_axis: 'Axis' = 0,
      broadcast_axis: 'Axis | None' = None) -> 'DataFrame'
  • other : DataFrame or Series,要对齐的对象
  • join : {'outer', 'inner', 'left', 'right'}, 默认 'outer',对齐时的连接方式
  • axis : 另一个对象对齐轴, 默认为 None,行列同时对齐,可选 0 或者 1
  • level : int or level 名称, 默认 None,在一个级别上广播,匹配通过多索引级别。
  • copy : bool, 默认 True,总是返回新对象。如果copy=False 且不需要重新索引然后返回原始对象。
  • fill_value : scalar, 默认 np.NaN,用于填充缺失值的值。默认为 NaN,但可以是任意值
    “兼容”值。
  • method : {'backfill', 'bfill', 'pad', 'ffill', None}, 默认 None。用于填充缺失值的方法:
  •