python - 按类型和勺划分订单数量

标签 python pandas

具有以下数据框:

**ASK**
Date        Type    Scoop   Qty
-------------------------------
6-Oct-17    A       Single  80
10-Oct-17   B       Triple  90
9-Oct-17    D       Double  40
10-Oct-17   C       Double  20
10-Oct-17   B       Triple  90
9-Oct-17    A       Single  30

**ICECREAMTYPE**
Type    Scoop   Flavour1    Flavour2    Flavour3    Scoops/Tub  Proportion
---------------------------------------------------------------------------
A       Single  Strawberry                                  4       0.25
C       Double  Banana      Lemon                           2       0.25
B       Triple  Vanilla     Lemon       Mint                3       0.11
D       Double  Chocolate   Vanilla                         5       0.10

根据比例,寻找一个Python逻辑来帮助确定要订购多少桶冰淇淋。

所需的输出是:

**ORDERTUBS**
Date        Type    Scoop       Flavour     Qty
------------------------------------------------
6-Oct-17    A       Flavour1    Strawberry  20
10-Oct-17   B       Flavour1    Vanilla     10
10-Oct-17   B       Flavour2    Lemon       10
10-Oct-17   B       Flavour3    Mint        10
9-Oct-17    D       Flavour1    Chocolate   4
9-Oct-17    D       Flavour2    Vanilla     4
10-Oct-17   C       Flavour1    Banana      5
10-Oct-17   C       Flavour2    Lemon       5
10-Oct-17   B       Flavour1    Vanilla     10
10-Oct-17   B       Flavour2    Lemon       10
10-Oct-17   B       Flavour3    Mint        10
9-Oct-17    A       Flavour1    Strawberry  7.5

谢谢!

最佳答案

这是你想要的吗?我打破了步骤

import pandas as pd
Target=df.merge(df1.drop('Scoop',1),on='Type',how='left')
Target=Target.set_index(['Date','Type','Scoop','Qty','Scoops/Tub','Proportion']).stack().reset_index()
Target['Qty']=Target['Qty']*Target['Proportion']
Target.drop(['Scoops/Tub','Proportion','Scoop'],1).rename(columns={'level_6':'Scoop',0:'Flavour'})

Out[49]: 
         Date Type   Qty     Scoop     Flavour
0    6-Oct-17    A  20.0  Flavour1  Strawberry
1   10-Oct-17    B   9.9  Flavour1     Vanilla
2   10-Oct-17    B   9.9  Flavour2       Lemon
3   10-Oct-17    B   9.9  Flavour3        Mint
4    9-Oct-17    D   4.0  Flavour1   Chocolate
5    9-Oct-17    D   4.0  Flavour2     Vanilla
6   10-Oct-17    C   5.0  Flavour1      Banana
7   10-Oct-17    C   5.0  Flavour2       Lemon
8   10-Oct-17    B   9.9  Flavour1     Vanilla
9   10-Oct-17    B   9.9  Flavour2       Lemon
10  10-Oct-17    B   9.9  Flavour3        Mint
11   9-Oct-17    A   7.5  Flavour1  Strawberry
<小时/>

数据输入:

df
Out[50]: 
        Date Type   Scoop  Qty
0   6-Oct-17    A  Single   80
1  10-Oct-17    B  Triple   90
2   9-Oct-17    D  Double   40
3  10-Oct-17    C  Double   20
4  10-Oct-17    B  Triple   90
5   9-Oct-17    A  Single   30

df1
Out[51]: 
  Type   Scoop    Flavour1 Flavour2 Flavour3  Scoops/Tub  Proportion
0    A  Single  Strawberry      NaN      NaN           4        0.25
1    C  Double      Banana    Lemon      NaN           2        0.25
2    B  Triple     Vanilla    Lemon     Mint           3        0.11
3    D  Double   Chocolate  Vanilla      NaN           5        0.10

关于python - 按类型和勺划分订单数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46597513/

相关文章:

Python 正则表达式 : Formatting use of commas, 国际句点

python - 按元素检查字符串是否存在

python - 使用并查找在 Python 中实现 Kruskal 算法

python - 如何使用 sklearn 管道和 FeatureUnion 选择多个(数字和文本)列进行文本分类?

python - 在 Python 上使用多进程与 API 请求和多个 for 循环

python - 我如何 'correct' 这个 matplotlib 绘图例程?

python - map_partitions 的返回值是多少?

python - Pandas 数据框分组值

python - 将列格式从秒更改为分钟

python - 在 Pandas 数据框中使用 pyproj 在投影之间进行转换