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

索引不匹配时如何将DataFrame的两列添加至另一个DataFrame

如何将单行DataFrame的指定列添加到多行DataFrame中

问题场景

我有两个长度不同的DataFrame:

  • 第一个DataFrame(记为first)有1200行,结构如下:
Date       Open       High        Low      Close  Adj Close  Volume
       2012-01-09  70.40 50.20  9.40      71.5          1.8      1.8       9447.0
  • 第二个DataFrame(记为second)仅有1行,结构如下:
Name  Marcet Cap.   Symbol   Symbol2    Boerse Info.   Periode    ISIN         WKN 
Once      1         tpp.us     NaN             1          5Y    US010001      999000      

需要将second中的ISIN和WKN两列添加到first中,期望结果如下:

Date       Open       High      Low      Close  Adj Close  Volume  ISIN   WKN  
       2012-01-09  70.40 50.20  9.40      71.5     1.8      1.8       944   US0101 999000            

已尝试merge()、concat()方法出现KeyError,且first['ISIN']=second['ISIN'].values无效,求可行解决方案。

解决方案

方法1:直接提取标量赋值

由于second只有1行,直接提取ISIN和WKN的标量值,赋值给first的新列即可,Pandas会自动将标量广播到first的所有行:

first['ISIN'] = second['ISIN'].iloc[0]
first['WKN'] = second['WKN'].iloc[0]

如果second的索引不是默认的0,也可以用second['ISIN'].values[0]提取第一个元素,效果一致。

方法2:批量添加多列

如果需要一次性添加多列,可使用assign()方法结合字典推导式,高效提取目标列:

target_cols = ['ISIN', 'WKN']
first = first.assign(**{col: second[col].iloc[0] for col in target_cols})

关于之前方法无效的原因

  • merge()和concat()需要匹配的键或轴对齐规则,未指定合适参数时会触发KeyError,而此场景无需合并/拼接逻辑,直接赋值更简洁。
  • first['ISIN']=second['ISIN'].values无效大概率是索引对齐问题,提取标量而非Series/数组即可避免该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:18:42