我有一些DataFrame
s,每个都有相同的行数。input_df
包含输入数据,param_df
包含用于计算的参数,output_df
包含输出数据。param_df
中的一列包含应该应用于每行的函数。
在下面的简单MWE中,我们希望其中一个函数应用于前五行,另一个函数应用于后五行。
我的问题是我如何才能做到这一点而不笨拙的列表理解?看起来我应该能够使用像map
或apply
这样的东西,但我还没有解决如何在每行的基础上应用callable。
import pandas as pd
import numpy as np
def func_1(in_val, a, b):
return in_val + a + b
def func_2(in_val, a, b):
return in_val + (2 * (a + b))
input_df = pd.DataFrame(data=[1 for row in range(10)],
columns=["GR"])
output_df = pd.DataFrame(data=[np.nan for row in range(10)],
columns=["VCLGR"])
param_df = pd.DataFrame(data=[[5, 10] for row in range(10)],
columns=["x", "y"])
# Add the callables to the param_df
param_df["method"] = func_1
param_df.loc[5:, "method"] = func_2
# Compute the output for each row using the function specified
output_df["VCLGR"] = [param_df["method"][i](input_df["GR"][i], param_df["x"][i], param_df["y"][i]) for i in range(len(input_df))]
字符串
1条答案
按热度按时间dhxwm5r41#
你可以使用一个函数,它接受一个框架行作为参数,并使用它来调用存储在框架中的函数。
字符串
https://trinket.io/python3/0183496178