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