在使用pandas的Jupyter笔记本电脑中,我一直遇到一个问题,就是如何将一个函数应用于数据帧的一组过滤行
简而言之,我有一个大的数据帧(这里我缩小了它),我想在其中添加一个额外的列-R_mf-以及使用过滤行(例如深度大于1但小于3)创建的值,并应用一个函数(Rxo_mf9373+(T_aq+6.77)/(df['Temp']+6.77))。我已经定义了所需的变量Rxo_mf9373和T_aq。有人能告诉我代码有什么问题吗
T_aq = 188
Rxo_mf9373 = 0.06
df = pd.DataFrame({'DEPTH':[1,2,3,4,5], 'Temp':[0.5, 0.6, 0.7, 0.8, 0.9]})
df['R_mf'] = df.where((df['DEPTH']>1) & (df['DEPTH'] < 3)).apply(lambda x, T_aq, Rxo_mf9373: Rxo_mf9373 + (T_aq + 6.77) / (x['Temp'] + 6.77), axis = 1)
当我运行此命令时,会得到以下结果: ()缺少2个必需的位置参数:“T_aq”和“Rxo_mf9373”
最后,在上面的例子中,我想要得到一个输出,其中数据帧包含一个额外的列df['R_mf'],并且它只有一个来自第二行lambda函数的计算值,其中depth等于2
提前谢谢
这里是指向所需输出的链接 [1] :https://i.stack.imgur.com/fQIdU.png
戴维斯, “缺少2个必需的位置参数”错误是因为lambda函数需要3个参数,但只接收一个。由于这些参数是常量,我建议您使用单变量函数以这种方式重写代码:
更好的是——摆脱
apply
:相关问题 更多 >
编程相关推荐