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

如何从pandas DataFrame取单个值为另一DataFrame新增全为该值的列

pandas 新增列全量赋值问题解决

错误原因

你执行的df2['E']=df1['B'][df1['B']==4]返回的是带索引的pandas Series对象,筛选后得到的Series仅包含索引为1的行,pandas给DataFrame赋值新列时会自动按索引对齐,因此只有df2中索引为1的行能匹配到值,其余行默认填充NaN。

正确实现方法

你只需要先从筛选结果中提取出标量值,再给df2的新列赋值即可,常用写法如下:

  • 方法1:使用.item()提取标量(推荐,仅当筛选结果只有1个值时使用)
    # 从df1中提取目标标量值4
    target_val = df1.loc[df1['B'] == 4, 'B'].item()
    # 给df2新增E列赋值
    df2['E'] = target_val
    
  • 方法2:使用.iloc[0]提取筛选结果的第一个值
    target_val = df1.loc[df1['B'] == 4, 'B'].iloc[0]
    df2['E'] = target_val
    
  • 方法3:直接赋值时调用.values[0]实现广播
    不想单独定义变量可以直接使用如下写法:
    df2['E'] = df1.loc[df1['B'] == 4, 'B'].values[0]
    

执行后得到的df2结果如下:

C  D  E
0  1  3  4
1  1  3  4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 20:21:00