【发布时间】:2020-06-29 19:51:40
【问题描述】:
在使用 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 函数的计算值等于深度等于2!
提前致谢!
这是所需输出的链接 [1]:https://i.stack.imgur.com/fQIdU.png
【问题讨论】:
标签: python pandas lambda apply where-clause