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

如何在Python的Pandas中提取DataFrame的单个原始类型值?

从DataFrame/Series提取原始数值类型的方法

当然可以直接提取float、int这类原始类型的元素,你当前得到<class 'numpy.ndarray'>是因为dfQry.values[0]返回的是一维数组(对应DataFrame的一行)。以下是几种更直接的实现方式:

方法1:使用.iloc索引获取标量

.iloc可按位置直接定位到单个单元格,返回值即为原始数值类型:

intHoursAll = dfQry.iloc[0, 0].round(2)
# 或指定列名提升可读性
intHoursAll = dfQry.iloc[0]['BILLHOURS'].round(2)

方法2:使用.at/.iat快速访问单个单元格

如果仅需访问单个单元格,.at(按标签)和.iat(按位置)是更高效的选择:

# 按行标签+列名访问
intHoursAll = dfQry.at[0, 'BILLHOURS'].round(2)
# 按位置索引访问
intHoursAll = dfQry.iat[0, 0].round(2)

方法3:提取Series后获取标量

先将目标列转为Series,再通过索引获取标量:

bill_hours_series = dfQry['BILLHOURS']
intHoursAll = bill_hours_series.iloc[0].round(2)

修正后的完整代码示例

import pandasql as ps
import pandas as pd

df = pd.read_csv(strFPath, sep='|', encoding='windows-1252')
strQry = "SELECT SUM(BILLHOURS) AS 'BILLHOURS' FROM df"
dfQry = ps.sqldf(strQry, globals())
# 直接获取标量并保留两位小数
intHoursAll = dfQry.iloc[0, 0].round(2)

若需要严格转换为Python原生float类型,可包裹float():

intHoursAll = float(dfQry.iloc[0, 0].round(2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:33:15