TypeError:“float”对象在函数中没有属性''

2024-09-27 23:28:12 发布

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

我试图将一个dataframe传递给一个函数,并从dataframe的不同列计算mean和std dev。当我一步一步地执行函数的每一行时(不编写这样的函数),它工作得很好。但是,当我试图编写一个函数来计算时,我总是得到这样的错误:

TypeError: 'float' object has no attribute '__getitem__'

这是我的代码:

^{pr2}$

以下是示例数据:

id           type             mean           sd              numSamples
------------------------------------------------------------------------
1             33              -0.43          0.40               101
2             23              -0.76          0.1                100
3             33               0.89          0.56               101
4             45               1.4           0.9                100

这是完整的错误回溯:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-134-f4dc392140dd> in <module>()
----> 1 mean,sd = df.apply(computeBias)

C:\Users\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\series.pyc in apply(self, func, convert_dtype, args, **kwds)
   2353             else:
   2354                 values = self.asobject
-> 2355                 mapped = lib.map_infer(values, f, convert=convert_dtype)
   2356 
   2357         if len(mapped) and isinstance(mapped[0], Series):

pandas\_libs\src\inference.pyx in pandas._libs.lib.map_infer (pandas\_libs\lib.c:66440)()

<ipython-input-133-2af38e3e29f0> in computeBias(data)
      1 def computeBias(data):
      2 
----> 3     meandata = np.array(data['mean'])
      4     sddata = np.array(data.sd)
      5     ni = np.array(data.numSamples)

TypeError: 'float' object has no attribute '__getitem__'

有人知道什么变通办法吗?蒂娅!在


Tags: 函数inconvertdataframepandasdatalibnp
1条回答
网友
1楼 · 发布于 2024-09-27 23:28:12
meandata = np.array(data['mean'])
TypeError: 'float' object has no attribute '__getitem__'

__getitem__是Python在使用索引时尝试调用的方法。在标记的行中,表示data['mean']正在生成错误。显然data是一个数字,一个浮点对象。你不能索引一个数字。在

data['mean']似乎您正在尝试使用命名索引从字典或数据帧中获取项。我不会深入研究你剩下的代码来决定你的意图。在

你需要做的是了解它到底是什么,是什么产生的。在


您在一个df.apply(....)中使用这个,显然认为它只是意味着

^{pr2}$

相反,我怀疑apply正在数据帧上以某种维度进行迭代,并将值或数据系列传递给代码。它没有传递整个数据帧。在

相关问题 更多 >

    热门问题