【发布时间】:2018-03-11 12:52:00
【问题描述】:
我有两个需要合并的 Pandas 数据框。第一个是一个长格式数据集,其中包含我在不同数量间断的商品的销售价格。价格随着购买的零件数量的增加而下降。
数据框1
PART# MY_QTY MY_PRC
Item1 1 $20
Item1 10 $18
Item1 20 $17
Item2 1 $120
Item2 30 $100
Item2 50 $95
第二个是包含多个供应商的数量细分和销售价格的宽格式数据集。对于下面的商品 1,如果我从 Vend1 购买 1 件,我支付 10 美元,4 件仍然是 10 美元,5 件是 8 美元,等等。数量中断的数量因商品和供应商而异,并且并非所有供应商都出售所有商品。
Dataframe2
PART# VEND# QTY1 PRC1 QTY2 PRC2 QTY3 PRC3
Item1 Vend1 1 $10 5 $8 15 $7
Item1 Vend2 1 $15 11 $12 30 $11
Item1 Vend3 1 $20 10 $18
Item2 Vend1 1 $75 20 $60 30 $55
Item2 Vend2 1 $80 12 $70
我想合并数据框,以便我可以将我的每个数量中断的销售价格与相同数量的供应商成本进行比较。最终的数据框将在 PART# 上具有左合并的形状,其中 VEND# 以列为中心。
我遇到困难的部分是根据 MY_QTY 获取正确的供应商价格。我应该能够阅读一行并查看各方对给定数量的物品收取的费用。预期输出如下。
结果数据框
PART# MY_QTY MY_PRC VEND1 VEND2 VEND3
Item1 1 $20 $10 $15 $20
Item1 10 $18 $8 $15 $18
Item1 20 $17 $7 $12 $18
Item2 1 $120 $75 $80
Item2 30 $100 $55 $70
Item2 50 $95 $55 $70
编辑
人们似乎对 Dataframe2 感到困惑。此数据帧按行读取。第一行值显示 Vend1 出售的 Item1 的价格。这一排从 1 件(1 件)到 2 件(5 件)价格为 PRC1(10 美元),然后从 2 件(5 件)到 3 件(15 件)价格为 PRC2(8 美元)。在请求的数量达到下一个数量突破之前,价格保持不变。
Say Mama's Farm Stand 以每个 1 美元的价格出售苹果。如果您购买 5 个苹果,那么每个苹果的价格将降至 0.75 美元。如果您购买 15 个苹果,那么价格将再次降至 0.50 美元。此示例的数据框如下所示。
PART# VEND# QTY1 PRC1 QTY2 PRC2 QTY3 PRC3
Apple Mama 1 $1 5 $.75 15 $.5
【问题讨论】:
-
第二行
MY_QTY是10,VEND18怎么样,10个没价格呢 -
可以分享您当前的代码以及您遇到了什么错误?
-
第二个数据帧中的
QTY1是否与结果数据帧交互? -
@Bharathshetty 我添加了一个编辑来阐明 Dataframe2 的工作原理。
-
@MattR QTY1 是供应商将销售的最小数量。在我的示例中,我为每个 QTY1 值使用 1,因此它实际上没有任何交互,但在我的实际数据中,一些供应商确实有更高的最小值,在这种情况下会有交互。如果 MY_QTY
标签: python pandas merge apply pandas-groupby