在Pandas DataFrame中使用Power Function

时间:2017-04-22 13:30:53

标签: python pandas math dataframe

我是Python的新手,想要创建一个带有索引和整数列-3,-2-1,1,2,3的基本pandas数据帧。在那之后,我想要包含额外的列,将这些整数用于各种权限。整理我用零替换NaN并四舍五入到小数点后两位。该表似乎正确填充,除了那些列:整数列**( - 3)和整数列**( - 2),例如3 **( - 3)= 0.04,但数据框显示0.如果有人能让我知道我哪里出错了,我将不胜感激。

import pandas as pd

intlist = []

for i in range(-3,0):
    intlist.append(i)

for i in range(1,4):
    intlist.append(i)

df = pd.DataFrame(intlist)

explist = [2/3,-3,-1/4,1/4,3/2,1/3,-2,-1/3]

for j in explist:
    df[str(j)]=df[0]**j

df = df.fillna(0)
df = df.round(2)

print(df)

2 个答案:

答案 0 :(得分:0)

似乎你陷入了一种奇怪的方式,Pandas处理带负整数的整数的取幂。虽然标准的lib会在看到负指数的情况下将参数转换为浮点数,但看起来Pandas会尝试将所有内容转换为int,如果它只是处理整数。

将您的intlist或explist转换为浮动应该解决您的问题。

尝试将explist替换为:

explist = [2/3, -3., -1/4, 1/4,
           3/2, 1/3, -2., -1/3]

答案 1 :(得分:0)

将for循环替换为:

for j in explist:
       df[str(j)]=np.power(df[0],float(j))

此方法也将numpy导入为np

您也可以在循环中使用此代码:

df[str(j)]=df[0]**float(j)