如何将 pandas 数据框合并到具有更多列的数据框,同时用相应的值填充空列?

How to merge pandas dataframe to a dataframe with more columns, while filling in the empty columns with corresponding values?

我有两个数据框,df1(例如)有 5 行和 3 列,df2 有 5 行但只有 2 列,因此:

df1 = pd.DataFrame({"First_Name":['Mark','John','Adam','Mark','Adam'], "Purchased":[20,12,13,40,23], "Last_Name":['S.','M.','C.','S.','C.'])

    First_Name  Purchased   Last_Name
0   Mark    20  S.
1   John    12  M.
2   Adam    13  C.
3   Mark    40  S.
4   Adam    23  C.

df2 = pd.DataFrame({"First_Name":['Jane','Mark','Mark','Adam','Jane'], "Purchased":[3,16,17,10,23]})

    First_Name  Purchased
0   Jane    3
1   Mark    16
2   Mark    17
3   Adam    10
4   Jane    23

我想将 df2 中的行附加到 df1,同时还根据 df1 中的值为第三列(在本例中为“姓氏”)创建值。

例如,我希望输出为:

    First_Name  Purchased   Last_Name
0   Mark    20  S.
1   John    12  M.
2   Adam    13  C.
3   Mark    40  S.
4   Adam    23  C.
5   Jane    3   nan
6   Mark    16  S.
7   Mark    17  S.
8   Adam    10  C.
9   Jane    23  nan

有什么方法可以简单地完成所有这些功能吗?谢谢!

这应该可以解决问题:

final = pd.concat([df1, df2]).reset_index()
final.sort_values('First_Name')
final.fillna(method='ffill')

这给出了

  index First_Name  Purchased Last_Name
0      0       Mark         20        S.
3      3       Mark         40        S.
6      1       Mark         16        S.
7      2       Mark         17        S.
1      1       John         12        M.
5      0       Jane          3        M.
9      4       Jane         23        M.
2      2       Adam         13        C.
4      4       Adam         23        C.
8      3       Adam         10        C.