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

如何按列名匹配pandas DataFrame并按规则对齐两个数据集?

你之前直接用df2[df1.columns]报错,是因为这个语法只能筛选已经存在于df2的列,df2没有的列就会触发KeyError。
这个需求用pandas内置的reindex方法就能一行搞定,完美匹配你说的三条规则:

import pandas as pd

# 示例数据
df1 = pd.DataFrame([[0,2,1],[1,3,0],[0,4,0]], columns=['A', 'B', 'C'])
df2 = pd.DataFrame([[0,0,1],[1,5,0],[0,7,0]], columns=['A', 'B', 'D'])

# 核心实现代码
df2 = df2.reindex(columns=df1.columns, fill_value=0)

执行后得到的结果完全符合预期:

A  B  C
0  0  0  0
1  1  5  0
2  0  7  0

该方法和规则的对应逻辑:

  • 两个DataFrame都存在的列(示例中A、B):直接保留df2的原有数据,匹配规则1
  • 仅在df1中存在的列(示例中C):reindex会自动新增该列,所有值填充为指定的fill_value=0,匹配规则2
  • 仅在df2中存在的列(示例中D):不在指定列集合里的列会被自动删除,匹配规则3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:30:05