程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了滚动平均成本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决滚动平均成本?

开发过程中遇到滚动平均成本的问题如何解决?下面主要结合日常开发的经验,给出你关于滚动平均成本的解决方法建议,希望对你解决滚动平均成本有所启发或帮助;

我有 dataframe;

df_exa = pd.DataFrame([['B',20,123],['B',14,125],['S',15,122.5],1,124],4,128]],columns=['Buy_Sell','quantity','price'],index=['Basket1','Basket2','Basket3','Basket4','Basket5','Basket6'])

我希望计算滚动累积成本(因此仅考虑 B(用于购买)) 我的结果应该如下所示:

df_exa_avg_cost = pd.DataFrame([['B',123,125,123.8235],123.5714],122.5,123.3333],124,128,123.6119]],'price','avg_cost'],'Basket6'])

我知道如何用 avg_cost 填充新列 for loop,但我正在尝试使用更有效的方法,因为篮子交易的数量可能会显着增加。 请问有人知道如何实现吗?

解决方法

你说你只想要 B 的累积平均成本,这是通过以下方式完成的:

df_exa['total'] = df_exa['quantity']*df_exa['price']

df_buy_ex = df_exa[df_exa['Buy_Sell'] == 'B'].copy()

df_buy_ex['t_cumsum'] = df_buy_ex['total'].cumsum()
df_buy_ex['q_cumsum'] = df_buy_ex['quantity'].cumsum()
df_buy_ex['cum_avg_p'] = df_buy_ex['t_cumsum']/df_buy_ex['q_cumsum']
df_exa_avg = df_exa.merge(df_buy_ex['cum_avg_p'],how='left',left_index=True,right_index=True)
df_exa_avg.ffill(inplace=True)

df_exa_avg[['Buy_Sell','quantity','price','cum_avg_p']]

这实际上为您提供了以下内容:

滚动平均成本

虽然您期望的结果值实际上更符合 B 和 S 的累积平均成本:

df_exa['total'] = df_exa['quantity']*df_exa['price']
df_exa['t_cumsum'] = df_exa['total'].cumsum()
df_exa['q_cumsum'] = df_exa['quantity'].cumsum()
df_exa['cum_avg_p'] = df_exa['t_cumsum']/df_exa['q_cumsum']

df_exa[['Buy_Sell','cum_avg_p']]

给出输出:

滚动平均成本

,

因为你想要'B's的avg_price,你可以这样做

buys = (df_exa['Buy_Sell'] == 'B')
df_exa.loc[buys,'avg_cost'] = ((df_exa.loc[buys,'quantity']*df_exa.loc[buys,'price']).cumsum()/df_exa.loc[buys,'quantity'].cumsum())
df_exa.fillna(method = 'ffill')

送给你

        Buy_Sell    quantity    price   avg_cost
Basket1 B           20          123.0   123.000000
Basket2 B           14          125.0   123.823529
Basket3 S           15          123.0   123.823529
Basket4 B           14          122.5   123.437500
Basket5 S           1           124.0   123.437500
Basket6 B           4           128.0   123.788462

大佬总结

以上是大佬教程为你收集整理的滚动平均成本全部内容,希望文章能够帮你解决滚动平均成本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: