与大熊猫算法相匹配的表中的购买和销售以计算物品库存和平均利润

问题描述 投票:1回答:2

虽然我希望以理想的方式用熊猫来实现,但这更多是算法问题,我想知道你们中的一些人是否有建议。问题如下:

一个表按日期,项目,数量(购买时为+,销售时为-)和价格包含产品的购买和销售。

条件:

  • 创建一个匹配每个项目的购买和销售以及每个项目的总平均利润的算法。
  • 匹配只能在同一日期,否则完全不匹配。
  • 每天剩余的正或负库存被忽略

具有单个产品的示例:

date   product    quantity    price
1      X          +2          1
1      X          -1          2
1      X          -1          4
2      X          +1          1
2      X          +1          2
3      X          -1          4

答案:结果将是仅在第1天匹配3笔交易,获利为-2 + 2 + 4 = 4

product   Profit 
X         +4
pandas algorithm
2个回答
0
投票

尝试一下:

# Just creating the data
df = pd.DataFrame({'date': [1,1,1,2,2,3], 
                   'product': 'X', 
                   'quantity': [2,-1,-1, 1, 1,-1], 
                   'price': [1,2,4,1,2,4]})

df['total'] = -df.quantity * df.price

profit = df.groupby(['product', 'date']).agg(total=('total', 'sum'))
print(profit)

              total
product date       
X       1         4
        2        -3
        3         4

这将返回一个新的数据框,其中日期和产品作为索引,相应的利润显示在一栏中。


0
投票

您可以在下面使用:

使用quantity+22转换为实际pd.eval(),并创建一个表示利润pd.eval()的助手系列:

s

然后您可以将quantity = pd.Series(pd.eval(df['quantity']),index=df.index) #[2, -1, -1, 1, 1, -1] s = df['price'].mul(quantity*-1,axis=0) #[-2, 2, 4, -1, -2, 4] 的数量作为数量,assign的作为assign,然后按日期分组并获取数量和利润之和。最后s数量总和等于0(完全匹配)的行:

profit

filter
© www.soinside.com 2019 - 2024. All rights reserved.