【发布时间】:2021-09-22 13:26:48
【问题描述】:
我正在尝试在数据框中使用应用功能。
下面是示例数据框。
import pandas as pd
from CoolProp.HumidAirProp import HAPropsSI
df =pd.DataFrame()
df['T'] = [23,35,55]
df ['RH'] = [50,70,35]
df['H']= df.apply(lambda x: HAPropsSI('H','T',x ['T']+273.15, 'P',101325,'R',x ['RH']/100), axis = 1)
实际的数据框包含 400,000 行和 8 列。当我在我的实际数据框中应用上述功能时,需要很长时间才能完成。有没有其他方法可以提高计算速度?
更新
我尝试按如下方式使用验证:
df ['Enthalpy'] = np.vectorize(HAPropsSI) ('H','T',df ['T']+273.15, 'P',101325,'R',df ['RH']/100)
它显示以下错误:
TypeError: Numerical inputs to HAPropsSI must be ints, floats, lists, or 1D numpy arrays.
函数的输入如下:
HAPropsSI('H',T',x ['T']+273.15,P',101325,'R',x ['RH']/100)
第一个参数,H是我要找的参数。
第二个参数,T是需要输入参数的类型,第三个参数是输入参数T的值。
第三个和第四个代表输入参数的类型和它的值。 类似的适用于第五和第六。
【问题讨论】:
-
你研究过多线程
apply吗? -
还没有。谢谢。
-
为什么不在
dfnumpy 值上直接使用HAPropsSI?像df["T"].values + 273.15... 在我的测试中工作并且速度快了一点 -
你应用的函数是做什么的,你能向量化操作吗?
-
如果可能的话,您应该重写
HAPropsSI,使其直接作用于数据向量或数据帧,而不是单个数字。