如何从主产品价格调整子产品价格?

时间:2021-06-08 01:18:59

标签: python pandas-groupby price

我有一个数据结构如下的表:

Textenter image description here

如何在每个不同订单ID的子产品之间以相同的调整率从主产品价格调整子产品价格?

更具体地说,我有一个带有设置代码 (MFDTSVLBR1DB1.B16) 的订单 ID (DH101300) 包括 3 个子产品 (MFDTCA701.B16) , MFDBCA602.B11, MFDBCA601.B11) 的数量为 1/每个子产品。 SET产品价格为619,每个子产品的价格依次为319、149、199(共667)。我需要调整每个子产品的价格如何使每个子产品的价格总计 = SET 产品价格。一套产品中每个子产品的调整率相同。 在 Excel 上很容易,但很难为每个订单 ID、集合产品中的每个子产品价格使用自动 Python 编码。 我非常感谢您的帮助。

#python #Adjust_price

1 个答案:

答案 0 :(得分:1)

这可以通过使用分组值创建另一个数据框,并将这些因素应用回原始数据框来完成。也许这可以给你一个开始:

import pandas as pd

data = [
[ 1, 1, 6190000, 3190000 ],
[ 1, 1, 6190000, 1490000 ],
[ 1, 1, 6190000, 1990000 ],
[ 1, 1, 1148000, 599000 ],
[ 1, 1, 1148000, 549000 ]]


df = pd.DataFrame(data, columns=['qty','subqty','price','subprice'])
print(df)
df2 = df.groupby('price').sum()
print(df2)
df2['factor'] = df2.index/df2['subprice']
print(df2)
df['fix'] = df2.loc[df['price'].tolist()]['factor'].tolist() * df['subprice']
print(df)

这是最终输出:

   qty  subqty    price  subprice           fix
0    1       1  6190000   3190000  2.960435e+06
1    1       1  6190000   1490000  1.382774e+06
2    1       1  6190000   1990000  1.846792e+06
3    1       1  1148000    599000  5.990000e+05
4    1       1  1148000    549000  5.490000e+05