熊猫如何将父数据框与2个子数据框合并

时间:2019-07-12 09:18:48

标签: python python-3.x pandas

我有一个名为发票(即发票)的数据框,如下所示:

id      invoice_id  date_invoice    user_id       invoice_line_ids
5449      5449        2019-07-12   Administrator   [5758, 5759]

另一个名为invoice_lines(这是该特定发票的发票行)的数据框如下:

id     invoice_id   product_id     product_name
5758    5449        1          Amazon Registration
5759    5449        19         Premium SMART Monthly

这是我所期望的 expected result

但这是我得到的:

result I got

这是我尝试过的:

result = pd.merge(invoice_dataframe, invoice_line_dataframe_transpose, how='outer', on='invoice_id')

问题是如何将数据框合并在一起,以便第一个发票行加到发票数据框,而第二个发票行显示为没有父发票,就在第一个发票行下方?

1 个答案:

答案 0 :(得分:1)

使用类似以下的内容:

final=pd.merge(invoice_dataframe, invoice_line_dataframe_transpose, how='outer',
                                             on='invoice_id',suffixes=('','_y'))
s=(final.assign(invoice_line_ids=final.invoice_line_ids.apply(tuple))
   .duplicated(invoice_dataframe.columns)) #apply tuple is required
final.loc[s,invoice_dataframe.columns]=''
print(final)

enter image description here