簡體   English   中英

可能的 pandas 錯誤?

[英]Possible pandas bug?

只是看看 Python/Pandas 中的一些奇怪行為。

我知道設置很復雜,我正在做一些……挑戰。

def lucas_n(n):
    '''Return the fist n lucas numbers modulo 1_000_007'''
    my_list = [1,3]
    while len(my_list) < n:
        my_list.append((my_list[-1]+my_list[-2])%1_000_007)
    return my_list

def f(seq):
    '''Look up https://projecteuler.net/problem=739'''
    
    df = pd.Series(seq)
    
    for i in range(len(seq)-1):
        df = df.iloc[1:].cumsum()
        
    return df.iloc[0]

x = lucas_n(1e4)

f(x)

>>> -8402283173942682253

簡而言之, x是一個正整數序列, f應用連續.iloc[1:].cumsum()操作。

而output是負數...

這是一個錯誤嗎? 數據類型問題?

您似乎有 integer 溢出。 在 Python 中,整數本身可以具有任意精度,但由於 pandas/numpy 默認使用 C 數據類型,可能會發生溢出:

在此處輸入鏈接描述

為了解決這個問題,您可能需要手動將數據轉換為 Python 整數:

def f(seq):
    '''Look up https://projecteuler.net/problem=739'''
    
    df = pd.Series(seq).astype('int') # Casting to Python integer type
    
    for i in range(len(seq)-1):
        df = df.iloc[1:].cumsum()
        
    return df.iloc[0]

這解決了我測試中的溢出問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM