我试图将一个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__'
有人知道什么变通办法吗?蒂娅!在
__getitem__
是Python在使用索引时尝试调用的方法。在标记的行中,表示data['mean']
正在生成错误。显然data
是一个数字,一个浮点对象。你不能索引一个数字。在data['mean']
似乎您正在尝试使用命名索引从字典或数据帧中获取项。我不会深入研究你剩下的代码来决定你的意图。在你需要做的是了解它到底是什么,是什么产生的。在
您在一个
^{pr2}$df.apply(....)
中使用这个,显然认为它只是意味着相反,我怀疑
apply
正在数据帧上以某种维度进行迭代,并将值或数据系列传递给代码。它没有传递整个数据帧。在相关问题 更多 >
编程相关推荐