You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas使用df.compare且align_axis=1时如何修改self/other标签?

解决方案

当align_axis=1时,self和other属于列MultiIndex的最后一层标签,你之前的方法是修改行索引,自然不会生效,只要把rename的操作对象从index改为columns即可:

# 仅需将index参数替换为columns,其余逻辑不变
df1.compare(df2, align_axis=1).rename(columns={'self': 'left', 'other': 'right'}, level=-1)

原理说明

compare返回结果的标签存储位置和align_axis参数直接相关:

  • align_axis=0:self/other存储在行索引的最后一层,所以用rename(index=..., level=-1)修改
  • align_axis=1:self/other存储在列索引的最后一层,所以用rename(columns=..., level=-1)修改

如果你需要适配两种align_axis场景,也可以用更通用的写法:

diff_result = df1.compare(df2, align_axis=1)
if diff_result.columns.nlevels > 1:
    # align_axis=1场景,改列标签
    diff_result = diff_result.rename(columns={'self': 'left', 'other': 'right'}, level=-1)
else:
    # align_axis=0场景,改行标签
    diff_result = diff_result.rename(index={'self': 'left', 'other': 'right'}, level=-1)

内容的提问来源于stack exchange,提问作者BioGeek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:45:01