我是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)
答案 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)