我有一个每日水果消费的输入 Dataframe ,如下所示:spend_df
Date Apples Pears Grapes
01/01/22 10 47 0
02/01/22 0 22 3
03/01/22 11 0 3
...
对于每种水果,我需要使用它们各自的参数和输入花费来应用一个函数,该函数包括前一天和当天的花费,如下所示:y = beta(1 - exp(-(theta*previous + current)/alpha))
parameters_df
Parameter Apples Pears Grapes
alpha 132 323 56
beta 424 31 33
theta 13 244 323
我的输出数据框应如下所示(可能包含错误):profit_df
Date Apples Pears Grapes
01/01/22 30.93 4.19 0
02/01/22 265.63 31.00 1.72
03/01/22 33.90 30.99 32.99
...
这是我的尝试:
# First map parameters_df to spend_df
merged_df = input_df.merge(parameters_df, on=['Apples','Pears','Grapes'])
# Apply function to each row
profit_df = merged_df.apply(lambda x: beta(1 - exp(-(theta*x[-1] + x)/alpha))
2条答案
按热度按时间jq6vz3qz1#
如果你先从
parameters_df
和spend_df
中提取必要的变量,那么它可能更容易阅读,然后简单地应用这个公式就会产生预期的输出。gzjq41n42#
使用Pandas
rolling
函数的另一种方法(这是一个通用版本,可以根据需要生成尽可能多的水果):