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

如何基于列名合并pandas DataFrame并匹配对应ticker的sector信息

pandas 不同索引DataFrame合并解决方案

1. 修复df2列名报错问题

你之前执行set_index('Index')触发列不存在报错,是因为Excel导入时没有正确识别表头,df2的列名被默认设为了0、1、2这类自动生成的数字。首先修正df2结构:

  • 先执行print(df2.head())确认结构:如果df2第一行是字段说明(第一列值为ticker、第二列值为sector),执行以下代码重置列名:
# 将第一行数据设为列名
df2.columns = df2.iloc[0]
# 移除已经用作列名的第一行,重置索引
df2 = df2[1:].reset_index(drop=True)
  • 修正后执行print(df2.columns.tolist()),确认输出中包含ticker和sector两个列名即可。

2. 合并生成目标df3

不要直接用concat,concat默认不会自动按ticker匹配对齐,会直接追加列。我们通过映射关系直接给df1新增sector行,会自动保留df1原有的列顺序和全部数据:

# 生成ticker到sector的映射字典
sector_map = df2.set_index('ticker')['sector'].to_dict()
# 新增sector行,自动按df1的ticker列顺序匹配值
df1.loc['sector'] = df1.columns.map(sector_map)
# 得到最终结果df3
df3 = df1.copy()

如果存在df1里的ticker在df2中没有对应sector的情况,默认会填充NaN,可按需填充默认值:

df3.loc['sector'] = df3.loc['sector'].fillna('未知板块')

3. 结果验证

执行print(df3.head())确认以下三点符合预期:

  • 原有avg、std、min、max四行数据无任何改动
  • 新增的sector行数值和对应ticker匹配正确
  • 列顺序和原df1完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:36:08