我有一个名为发票(即发票)的数据框,如下所示:
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
但这是我得到的:
这是我尝试过的:
result = pd.merge(invoice_dataframe, invoice_line_dataframe_transpose, how='outer', on='invoice_id')
问题是如何将数据框合并在一起,以便第一个发票行加到发票数据框,而第二个发票行显示为没有父发票,就在第一个发票行下方?
答案 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)