Pandas 从其他两个表创建一个新表

Pandas 从其他两个表创建一个新表,pandas,Pandas,如果我想将该表与其他两个表b、c合并 其中表a包含以下列:(父项、样式、结束日期、周数、净需求) 表格和计算在特定日期生产产品所需的费用 该表应与BOM表(物料清单)相似 熊猫可以使用吗 表b表示每个日期对产品A的需求: Style Date WeekNum Quantity A 24/11/2019 0 600 A 01/12/2019 1 500 表c表示用于制造产品A的详细信息和数量: Parent Child Q

如果我想将该表与其他两个表b、c合并 其中表a包含以下列:(父项、样式、结束日期、周数、净需求) 表格和计算在特定日期生产产品所需的费用

该表应与BOM表(物料清单)相似

熊猫可以使用吗

表b表示每个日期对产品A的需求:

Style  Date        WeekNum Quantity 
A      24/11/2019    0      600
A       01/12/2019    1      500
表c表示用于制造产品A的详细信息和数量:

Parent Child Q 
A       A1    2
A1      A11    3
A1      A12    2
所以表a应该这样填写:

Parent  Child  Date        WeekNum  Net_Quantity
A        A1   24/11/2019    0         1200
A1       A11   24/11/2019    0         3600
A1       A12    24/11/2019   0         2400
A        A1     01/12/2019    1         1000
A1       A11    01/12/2019    1         3000
A1       A12     01/12/2019    1         2000
data2 = {'Parent':['A','A1','A1'], 'Child':['A1','A11','A12'], 
        'Q':[2,3,2], 'Style':['A','A','A']} 

df2 = pd.DataFrame(data2) 

欢迎使用,为了正确合并这些表和其他表,您必须有一个公共键来合并。您可以将所述键添加到每个表中,如下所示:

Parent  Child  Date        WeekNum  Net_Quantity
A        A1   24/11/2019    0         1200
A1       A11   24/11/2019    0         3600
A1       A12    24/11/2019   0         2400
A        A1     01/12/2019    1         1000
A1       A11    01/12/2019    1         3000
A1       A12     01/12/2019    1         2000
data2 = {'Parent':['A','A1','A1'], 'Child':['A1','A11','A12'], 
        'Q':[2,3,2], 'Style':['A','A','A']} 

df2 = pd.DataFrame(data2) 
在此之后,您可以对第一个表执行左联接,然后可以为同一日期创建多行。所以本质上是这样的:

(注意,如果执行左联接,左表将根据需要创建尽可能多的重复行,以满足右表上匹配键的需要)

然后计算:

test['Net_Quantity'] = test.Quantity*test.Q
test.drop(['Q'], axis = 1,inplace=True)
结果:

    Style   Date    WeekNum Quantity    Parent  Child   Net_Quantity
0   A     24/11/2019    0   600            A    A1      1200
1   A     24/11/2019    0   600            A1   A11     1800
2   A     24/11/2019    0   600            A1   A12     1200
3   A     01/12/2019    1   500            A    A1      1000
4   A     01/12/2019    1   500            A1   A11     1500
5   A     01/12/2019    1   500            A1   A12     1000

如果我理解正确,您希望合并两个数据帧:合并它们后,可以像往常一样轻松地计算净数量。您能给我们一些迄今为止您所做的代码吗?