df
是我的数据帧,我在它上面使用.apply()
。你知道吗
这不起作用并产生Division by zero
:
def power_divergence(x): # x is a series here
s = sp.stats.power_divergence(np.array(x), lambda_="cressie-read")
return x
df.apply(power_divergence, axis=1)
相比之下,这是可行的:
def power_divergence(x): # x is a series here
s = sp.stats.power_divergence(np.array(np.array(x).tolist()), lambda_="cressie-read")
return x
df.apply(power_divergence, axis=1)
前一种方法会导致错误:
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
C:\canopy\App\appdata\canopy-1.1.0.1371.win-x86_64\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc)
174 else:
175 filename = fname
--> 176 exec compile(scripttext, filename, 'exec') in glob, loc
177 else:
178 def execfile(fname, *where):
C:\file.py in <module>()
30 return x
31
---> 32 r = target_df.apply(power_divergence, axis=1)
C:\canopy\User\lib\site-packages\pandas\core\frame.pyc in apply(self, func, axis, broadcast, raw, args, **kwds)
4414 return self._apply_raw(f, axis)
4415 else:
-> 4416 return self._apply_standard(f, axis)
4417 else:
4418 return self._apply_broadcast(f, axis)
C:\canopy\User\lib\site-packages\pandas\core\frame.pyc in _apply_standard(self, func, axis, ignore_failures)
4489 # no k defined yet
4490 pass
-> 4491 raise e
4492
4493
ZeroDivisionError: ('division by zero', u'occurred at index 123441')
不幸的是,试图用一个简单的数据帧来重现错误是行不通的。我定义了这个pd.DataFrame(data=[np.array([0,0,4,0,0])])
,但是问题没有出现。你知道吗
所以我的一般问题是:数据帧设置的某些参数是否可能使它们的np.array()
等价物与转换为np.array()
的普通列表不同?请忽略应用的测试通常需要更多的非零结果,但在这种情况下,这不是失败的原因。你知道吗
按要求:
a 0
b 0
c 4
d 0
e 0
Name: 123441, dtype: object
目前没有回答
相关问题 更多 >
编程相关推荐