Statistics函数因转换的DataFram而失败

2024-04-20 14:27:44 发布

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

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

Tags: 数据inselfdfreturnlibdefnp