我有一个熊猫数据框,看起来像
Temperature_lim Factor
0 32 0.95
1 34 1.00
2 36 1.06
3 38 1.10
4 40 1.15
我需要提取任何给定温度的因子值,如果当前温度为31,则因子为0.95。如果我当前的温度是33,则系数是1,如果我的current_temp是38.5,则系数是1.15。因此,通过给出当前温度,我想知道该温度的因子。
我可以使用多个if else语句来执行此操作,但是有什么有效的方法可以通过在pandas或python中创建bin / interval来做到这一点。
谢谢
答案 0 :(得分:1)
使用cut
,并将-np.inf
添加到列Temperature_lim
的值中,并按Factor
值的最后一个值缺失值:
df1 = pd.DataFrame({'Temp':[31,33,38.5, 40, 41]})
b = [-np.inf] + df['Temperature_lim'].tolist()
lab = df['Factor']
df1['new'] = pd.cut(df1['Temp'], bins=b, labels=lab, right=False).fillna(lab.iat[-1])
print (df1)
Temp new
0 31.0 0.95
1 33.0 1.00
2 38.5 1.15
3 40.0 1.15
4 41.0 1.15