使用 python 根据存储在变量中的索引将计算值添加到空列
Adding the calculated values to an empty column based on index stored in a variable using python
我在编程方面相对较新,这是我编写的第一个 python 代码。
这是我用来计算的代码。我设法计算了这些值,它们可以在变量“HT”中看到。但是我正在努力使用变量“ind”中的索引将它附加到“Heat Category”列中的 Dataframe“poll”。获取列的值后,将其导出到 excel 文件不会有问题。
使用此代码,我不断为每个计算值获取多个数据帧,在整个“热类别”列中具有相同的值,并且它不断重复另一个计算值。我认为追加到列必须根据索引一个一个地完成,最后我必须得到一个数据框,但我不确定如何。我在互联网上浏览了很多以前的问题和解决方案,但我没有找到适合我的案例的解决方案。
谁能帮帮我?
import pandas as pd
#assigning range
AHi =[50,100,150,200,300]
ALo=[0,51,101,151,201]
CHi=[20,40,60,160,260]
CLo=[0,20.1,40.1,60.1,160.1]
poll=pd.read_excel("C:/Compiled sheet.xlsx")
x = poll[['Temp_Avg']]
y = poll[['Heat Category']]
x_num=len(x)
print(x_num)
i=0
for i in range(x_num):
heat = x.iloc[i]['Temp_Avg'] #extracting all data from the column Temp_Avg
len_num=0
len_num=len(AHi)
for j in range(len_num):
if heat<CHi[j] and heat>=CLo[j]: #finding out the range in which the values lie
z=(CLo[j])
ind=CLo.index(z) #finding out the index
CH=CHi[ind]
CL=CLo[ind]
AH=AHi[ind]
AL=ALo[ind]
#calculation
try:
y=((AH-AL)+(CH-CL))*(heat-CL)
except ZeroDivisionError:
print ('NA')
HT=int(round(y,0))
#trial to add the values to the column Heat Category
#poll.loc[[ind], 'Heat Category'] = HT
#print (poll)
poll.loc[:,'Heat Category'] = HT
print(poll)
预期输出
Temp_Avg Heat Category
175.77 382
163.59 428
135.97 498
and so on.....
请注意以下行中的缩进已调整。
#calculation
try:
y=((AH-AL)+(CH-CL))*(heat-CL)
except ZeroDivisionError:
print ('NA')
HT=int(round(y,0))
#trial to add the values to the column Heat Category
#poll.loc[[ind], 'Heat Category'] = HT
#print (poll)
poll['Heat Category'].iloc[i] = HT # This line was modified
print(poll)
还修改了倒数第二行
结果:
Temp_Avg Heat Category
0 175.77 3117.0
1 163.59 694.0
2 135.97 11297.0
3 124.88 9646.0
等等...
我在编程方面相对较新,这是我编写的第一个 python 代码。
这是我用来计算的代码。我设法计算了这些值,它们可以在变量“HT”中看到。但是我正在努力使用变量“ind”中的索引将它附加到“Heat Category”列中的 Dataframe“poll”。获取列的值后,将其导出到 excel 文件不会有问题。
使用此代码,我不断为每个计算值获取多个数据帧,在整个“热类别”列中具有相同的值,并且它不断重复另一个计算值。我认为追加到列必须根据索引一个一个地完成,最后我必须得到一个数据框,但我不确定如何。我在互联网上浏览了很多以前的问题和解决方案,但我没有找到适合我的案例的解决方案。
谁能帮帮我?
import pandas as pd
#assigning range
AHi =[50,100,150,200,300]
ALo=[0,51,101,151,201]
CHi=[20,40,60,160,260]
CLo=[0,20.1,40.1,60.1,160.1]
poll=pd.read_excel("C:/Compiled sheet.xlsx")
x = poll[['Temp_Avg']]
y = poll[['Heat Category']]
x_num=len(x)
print(x_num)
i=0
for i in range(x_num):
heat = x.iloc[i]['Temp_Avg'] #extracting all data from the column Temp_Avg
len_num=0
len_num=len(AHi)
for j in range(len_num):
if heat<CHi[j] and heat>=CLo[j]: #finding out the range in which the values lie
z=(CLo[j])
ind=CLo.index(z) #finding out the index
CH=CHi[ind]
CL=CLo[ind]
AH=AHi[ind]
AL=ALo[ind]
#calculation
try:
y=((AH-AL)+(CH-CL))*(heat-CL)
except ZeroDivisionError:
print ('NA')
HT=int(round(y,0))
#trial to add the values to the column Heat Category
#poll.loc[[ind], 'Heat Category'] = HT
#print (poll)
poll.loc[:,'Heat Category'] = HT
print(poll)
预期输出
Temp_Avg Heat Category
175.77 382
163.59 428
135.97 498
and so on.....
请注意以下行中的缩进已调整。
#calculation
try:
y=((AH-AL)+(CH-CL))*(heat-CL)
except ZeroDivisionError:
print ('NA')
HT=int(round(y,0))
#trial to add the values to the column Heat Category
#poll.loc[[ind], 'Heat Category'] = HT
#print (poll)
poll['Heat Category'].iloc[i] = HT # This line was modified
print(poll)
还修改了倒数第二行
结果:
Temp_Avg Heat Category
0 175.77 3117.0
1 163.59 694.0
2 135.97 11297.0
3 124.88 9646.0
等等...