python pandas溢出错误dataFrame

时间:2016-03-18 14:31:38

标签: python pandas overflow stack-overflow

我是python的新手,我正在使用pandas库来处理数据帧。 我创建了一个函数" elevate_power"读取具有一列浮点值(示例x)和度数(示例lambda)的数据帧,并输出数据帧,其中每列包含原始列的幂(示例:输出为x,x ^ 2中,x ^ 3)

问题是当我的学位高于30时,我会出现溢出错误。 有没有解决这个问题的方法?

我并不特别担心精确度,所以我不介意失去一些精确度。

然而,(这很重要),我需要输出类型为float,因为我会调用一些numpy子程序,如果我改变类型,会给我错误。

我尝试了几个技巧:例如我尝试在函数内使用十进制,但后来我无法将格式恢复为浮点数,这是一个问题,因为当我从numpy调用点积和线性代数求解器时我会遇到错误。

任何建议都将不胜感激,

这是测试代码(我以低度值运行,因此它不会崩溃):

def elevate_power(column, degree):
    df = pd.DataFrame(column)
    dfbase=df
    if degree > 0:
        for power in range(2, degree+1): 
            # first we'll give the column a name:
            name = 'power_' + str(power)
            df[name]= 0           
            df[name] = dfbase.apply(lambda x: x**power , axis=1)
    return(df)

   import pandas as pd
   import numpy as np
   test= pd.Series([1., 2., 3.])
   test2=pd.DataFrame(test)
   degree=5
   print elevate_power(test2, degree )
   np.dot(test2['power_2'],test2['power_3'])

The printout is :

   0  power_2  power_3  power_4  power_5
0  1        1        1        1        1
1  2        4        8       16       32
2  3        9       27       81      243

276.0

1 个答案:

答案 0 :(得分:1)

怎么样

import pandas as pd
import numpy as np
series = [1., 2., 3.]
degree = 5

a = pd.DataFrame({"power_" + str(power): np.power(series, power) for power in range(1, degree+1)})
print(a)
print(a.dtypes)

为我带来花车