Python添加了一个在字段中循环的函数

Python添加了一个在字段中循环的函数,python,loops,dataframe,calculation,Python,Loops,Dataframe,Calculation,在Excel中,我使用了如下计算: 0.16667*10^((C15-121.1)/10)。计算放在D14上 在图中,我想对索引0的“0”列进行以下计算: =0.16667*10^((91.03-121.1)/10)。这意味着索引1上的temp用于计算索引0上的列“0”。整个专栏都是这样的 进一步解释: Temp Calculation 0 90.01 0.16667*10^((91.03-121.1)/10) 1 91.03 0.16667*10^((95

在Excel中,我使用了如下计算: 0.16667*10^((C15-121.1)/10)。计算放在D14上

在图中,我想对索引0的“0”列进行以下计算: =0.16667*10^((91.03-121.1)/10)。这意味着索引1上的temp用于计算索引0上的列“0”。整个专栏都是这样的

进一步解释:

    Temp     Calculation
0   90.01    0.16667*10^((91.03-121.1)/10)
1   91.03    0.16667*10^((95.06-121.1)/10)
2   95.06    0.16667*10^((100.07-121.1)/10)
3   100.07   0.16667*10^((103.00-121.1)/10)
4   103.00

请看DF中的计算。计算中的温度比当前指数高一个温度

编辑:

然后我想添加计算:

test["calculation"] = 0.16667*10^((test["Temp"][1:]-121.1)/10)
这会产生以下错误:

TypeError: Cannot perform 'rxor' with a dtyped [float64] array and scalar of type [bool]
编辑2:

test["calculation"] = 0.16667*10**((test["Temp"][1:]-121.1)/10).reset_index()


test returns:

    Temp    calculation
0   90.01   1.6667
1   91.03   16.6670
2   95.06   166.6700
3   100.07  1666.7000
4   103.50  NaN
计算的方式很好。但结果是不同的。当温度为100.07时,结果必须为0.001314。见下文:

test2 = 0.16667*10**((100.07-121.1)/10)

out: 0.0013147931580348442


您可以引用数据帧中的整列,并根据需要对它们执行任何计算

df["answer"] = 0.16667*10**((df["Temp"]-121.1)/10)
编辑:

我现在明白了,您希望使用下一行来计算当前行; 您可以将pandas系列视为列表并对其进行索引,即[1:]

df["calculation"] = 0.16667*10**((df["Temp"][1:]-121.1)/10).reset_index()
这将使“计算”列中的最后一个点保留为NaN,但如果以后愿意,您可以手动更改它

EDIT2:Oversight,^在python中是xor,**相当于power。 .reset_index()是必需的,否则偏移量将在数据帧的开始处,而不是结束处

编辑3:

使用代码

test["calculation"] = 0.16667*10**((test["Temp"][1:]-121.1)/10).reset_index(drop=True)
我得到了结果

     Temp  calculation
0   90.01     0.000164
1   91.03     0.000415
2   95.06     0.001315
3  100.07     0.002896
4  103.50          NaN

谢谢你的回答。但是df[“temp”]必须是一个索引,直到结果必须是的索引。我不太确定我是否理解。你能编辑你的帖子并输入你的预期输出吗?谢谢你的帮助。最后一个问题。。。我已经更新了我的代码,它给出了以下错误:TypeError:无法使用dtyped[float64]数组和[bool]类型的标量执行“rxor”.您必须发布代码,让我了解该部分中发生的情况啊,这是我的疏忽,抱歉是python中的xor运算符,**是幂运算符。我还添加了reset_index()函数来修复索引。
     Temp  calculation
0   90.01     0.000164
1   91.03     0.000415
2   95.06     0.001315
3  100.07     0.002896
4  103.50          NaN