看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
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],
)
df
'''
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)
left
'''
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)
left
'''
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)
left
'''
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'
参数:
返回:
(left, right) : (DataFrame, type of other),对齐的对象。
更新时间:May 9, 2022, 9:57 a.m. 标签:pandas align 对齐