我有一个两列pandas DataFrame,看起来如下所示:
import pandas as pd
df = pd.DataFrame([[5,100],[6,200],[7,250],[8,1000]],columns=['Price','Units'])
给定一个阈值,比如1500,我想取两列产品的累积和(直到总数达到1500的阈值)并除以'单位'列的累积总和,使得累积总和只能达到1500.我可以使用for循环实现这个,但熊猫怎么做呢?
详细说明一下:
df['Product'] = df.prod(axis=1)
df['CumSum'] = df['Product'].cumsum()
在index = 1时,累积和超过阈值(1700> 1500) . 然后,我们只想获得达到阈值的单位数 . 例如,结果将是df:
Price Units Product CumSum CumSumWithThreshold
5 100 500 500 500
6 200 1200 1700 1500
7 250 1750 3450 0
8 1000 8000 11450 0
鉴于你有1500美元的花费,每单位的平均价格是多少?在上面,您可以支付100个单位,价格为5美元(总计500美元)和(1000/6)单位价格6美元(此价格总计1000美元) . 因此,每单位的平均价格是:1500美元/(100(1000/6))= 5.625美元......
2 回答
我假设这是你尝试过的for循环的类型,但这不需要在终止行之外进行任何计算 .
我已经能够接近,但也许不是熊猫会做的事情 . 也许这个答案会渗透更多的创造力:
还有其他想法吗?