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

从DataFrame提取值插入另一DataFrame的问题解决与原因分析

问题分析与解决

复现代码

import pandas as pd
df1 = pd.DataFrame({'cola':[1,2,3], 'colb':['a','b','c']})

selected = df1[df1['cola'] == 1]

tempDf = pd.DataFrame({'col1':[selected['cola']], 'col2': [10]})

现象

执行后tempDf的col1列显示为0 1 Name: cola, dtype: int64,而非预期的纯数值1,col2列正常显示10。

原因

selected['cola']返回的是一个Series对象(带索引、列名和数据类型的一维结构),当把它放在列表[selected['cola']]里传入DataFrame构造器时,Pandas会把整个Series当作单个元素存入单元格,而不是提取其中的数值。

修改方案

有三种常用方式提取纯数值:

  • 用.values[0]直接取Series的第一个值(因为筛选结果只有一行):
tempDf = pd.DataFrame({'col1':[selected['cola'].values[0]], 'col2': [10]})
  • 用.iloc[0]按位置取第一行的对应列值:
tempDf = pd.DataFrame({'col1':[selected['cola'].iloc[0]], 'col2': [10]})
  • 直接在筛选时提取标量值,避免生成Series:
selected_val = df1.loc[df1['cola'] == 1, 'cola'].iloc[0]
tempDf = pd.DataFrame({'col1':[selected_val], 'col2': [10]})

执行任意一种修改后,tempDf的col1列都会显示纯数值1,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:05:28