Python TypeError:元组索引必须是整数或切片,而不是数字浮点数64

2024-10-03 23:24:39 发布

您现在位置:Python中文网/ 问答频道 /正文

因为一些看起来很简单的错误。如有帮助,不胜感激。在

finaltbl是一个pandas df,包含col1prelin、col2prelin和col3prelin,其值在浮点格式中介于0和1之间。在

finaltbl['col1'] = np.nan
finaltbl['col2'] = np.nan
finaltbl['col3'] = np.nan
coldict = {'col1':'col1prelim', 'col2':'col2prelim', 'col3':'col3prelim'}

for k, v in coldict.items():
    finaltbl.at[0, k] = 1
    finaltbl.at[1, k] = np.mean(finaltbl.loc[0, v], finaltbl.loc[1, v])

这将返回TypeError: tuple indices must be integers or slices, not numpy.float64

然而,这是可行的:

^{pr2}$

我如何改变我的平均/平均计算以上工作?我需要稍后使用3或4个输入,而不是2,并希望能够使用一个平均公式或类似的东西。在


Tags: pandasdf错误npnanlocatcol2
2条回答

当你表演的时候numpy.平均值()对于这些值,结果存储在Numpy的内部浮点数不能用作索引器的类型。您需要将变量强制转换为和整数。在

对于标量值,int()很好—这就是您的情况。对于float64 ndarray,需要使用Numpy的astype()方法。在

制作一个小数据帧:

In [17]: df = pd.DataFrame(np.arange(12.).reshape(4,3))                                   
In [18]: df                                                                               
Out[18]: 
     0     1     2
0  0.0   1.0   2.0
1  3.0   4.0   5.0
2  6.0   7.0   8.0
3  9.0  10.0  11.0

尝试使用mean,显示完整的回溯:

^{pr2}$

请注意,尝试使用axis变量时会发生错误。如果arr是numpy数组,那么arr.shape是一个元组。(1,2,3)[1.0]将产生相同的错误消息。在

来自np.mean文档:

Signature: np.mean(a, axis=None, ...)

第一个参数是数组(或者可以组成数组的东西)。第二个是轴值-None,一个整数,或者一个整数元组。相反,你给它一个数据帧的元素,显然是一个浮点数。在

所以您需要给np.mean正确的参数。例如,数据帧元素列表:

In [22]: np.mean([df.loc[0,1],df.loc[1,1]])                                               
Out[22]: 2.5

===

小结:

  • 看看完整的回溯,给我们看看。它可以为错误提供有价值的线索

  • 阅读你使用的函数的文档。

相关问题 更多 >