Pandas溢出错误系列.应用

2024-04-23 07:23:49 发布

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

我有一个函数,可以很好地处理单个值,但是当我将它用于pandas时系列.应用(),它给出一个溢出错误。你知道吗

from __future__ import division
import pandas as pd
import numpy as np

birthdays = pd.DataFrame(np.empty([365,2]), columns = ['k','probability'], index = range(1,366))
birthdays['k'] = birthdays.index

我做了一个函数:

def probability_of_shared_bday(k):
    end_point = 366 - k
    numerator = 1
    for i in range(end_point, 366):
        numerator = numerator*i
    denominator = 365**k
    probability_of_no_match = (1 - numerator/denominator)
    return probability_of_no_match

当我对单个整数进行测试时,效果很好:

 probability_of_shared_bday(1)

0.0个

 probability_of_shared_bday(100)

0.999996927510721

但当我尝试将此函数与apply一起使用时:

birthdays['probability'] = birthdays['k'].apply(probability_of_shared_bday, convert_dtype=False)

OverflowerError:整数除法结果对于浮点来说太大

无论convert_dtype是真是假,都会发生这种情况。你知道吗

检查birthdays['k'].dtypes我得到dtype('int64')


Tags: of函数importpandasindexasnprange
1条回答
网友
1楼 · 发布于 2024-04-23 07:23:49

我不知道为什么apply会有这个问题,但是不应该像当初那样编写函数。这里有一个建议可以避免将两个巨大的数字分开:

def probability_of_shared_bday(k):
    end_point = 366 - k
    ratio = 1
    for i in range(end_point, 366):
        ratio *= i / 365
    probability_of_no_match = (1 - ratio)
    return probability_of_no_match

问题就解决了!你知道吗

相关问题 更多 >