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

DataFrame.at报错:TypeError仅整数标量数组可转为标量索引解析

DataFrame.at 报错解释与解决:TypeError: only integer scalar arrays can be converted to a scalar index

一、报错的人话解释

这个错误的意思是:你想用df.at[row, col]定位表格里的某一个单元格数据,但你提供的列名(或行名)格式不对——程序把它识别成了一组字符串/数字的集合(数组),而不是单个能直接定位的标签,所以没法找到对应的单元格。

二、问题根源

看你的代码,创建DataFrame时犯了一个小错误:

df_total = pandas.DataFrame(columns=[colname], index=[indexnames], dtype=np.float64)

colname本身就是一个包含年份字符串的列表(比如['2013','2014',...]),你又给它套了一层方括号[colname],导致DataFrame的列变成了多层索引(MultiIndex),列标签不再是单个的'2013',而是数组类型的结构。而df.at方法只能接受单个的普通行/列标签,因此触发了报错。

同理,index=[indexnames]也犯了同样的错误,虽然没触发报错,但不符合规范。

三、解决方法

创建DataFrame时,去掉columns和index参数外层的方括号,直接传入列表即可:

df_total = pandas.DataFrame(columns=colname, index=indexnames, dtype=np.float64)

四、修复后的完整代码

import pandas
import numpy as np
from datetime import date, time, datetime

def monthlyDT(firstidx, lastidx):
    print('entered downtimes()')
    print('\tthe first downtime timestamp = ' + str(DTs[firstidx]))
    print('\tthe last downtime timestamp = ' + str(DTs[lastidx]))
    
    print('row indices:\n' + str(df_total.index))
    print('column headers: \n' + str(df_total.columns))

    col = str(currentyr)
    print('col = ' + str(col))
    row = str(currentmonth) + 'UTtotal'
    print('row = ' + str(row))
    DTduration = df_total.at[row, col]
    print('row / col (' + str(row) + ' / ' + str(col) + ') =\n' + str(DTduration))
    return()


#setup working arrays to hold the datasets
DTs = np.array([1.378854180000000000e+09, 1.378904520000000000e+09, 1.378957920000000000e+09, 1.378968180000000000e+09])
DTe = np.array([1.378858140000000000e+09, 1.378908000000000000e+09, 1.378958040000000000e+09, 1.378968240000000000e+09])

#build the 'year' column names array
colname = []
y = 2013
currentyr = 2013
yrend = 2024
currentmonth = 9
while y <= yrend:
    colname.append(str(y))
    y = y + 1
print('colname = ' + str(colname))
#create the index name array
indexnames = ['UTtotal', 'DTtotal', 'Eventstotal', 
            '1UTtotal', '1DTtotal', '1Eventstotal',
            '2UTtotal', '2DTtotal', '2Eventstotal',
            '3UTtotal', '3DTtotal', '3Eventstotal',
            '4UTtotal', '4DTtotal', '4Eventstotal',
            '5UTtotal', '5DTtotal', '5Eventstotal',
            '6UTtotal', '6DTtotal', '6Eventstotal',
            '7UTtotal', '7DTtotal', '7Eventstotal',
            '8UTtotal', '8DTtotal', '8Eventstotal',
            '9UTtotal', '9DTtotal', '9Eventstotal',
            '10UTtotal', '10DTtotal', '10Eventstotal',
            '11UTtotal', '11DTtotal', '11Eventstotal',
            '12UTtotal', '12DTtotal', '12Eventstotal'
            ]

# 修复:去掉columns和index外层的方括号
df_total = pandas.DataFrame(columns=colname, index=indexnames, dtype=np.float64)
print('df_total is:\n' + str(df_total))
df_total = df_total.fillna(-1)
print('\n\ndf_total is:\n' + str(df_total) + '\n\n')

monthlyDT(0, 3)
print('end')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:49:50