Pandas: 合并多对一

Pandas: Merge many-to-one

假设我有 2 个数据框:

df1:

Name  Age
Pete  19
John  30
Max   24

df2:

Name   Subject  Grade  
Pete   Math     90
Pete   History  100
John   English  90
Max    History  90
Max    Math     80

我想将它们 df2 合并到 df1,多对一,最终得到这样的结果:

Name   Age  Subject  Grade  
Pete   19   Math     90
Pete   19   History  100
John   30   English  90
Max    24   History  90
Max    24   Math     80

我不想按 SubjectGrade 对它们进行分组,我需要复制它们以便保留所有内容。

您可以按如下方式使用 pd.merge

import pandas as pd
if __name__ == '__main__':
    df1 = pd.DataFrame({"Name": ["Pete", "John", "Max"],
                        "Age": [19, 30, 24]})
    df2 = pd.DataFrame({"Name": ["Pete", "Pete", "John", "Max", "Max"],
                        "Subject": ["Math", "History", "English", "History", "Math"],
                        "Grade": [90, 100, 90, 90, 80]})
    df3 = pd.merge(df1, df2, how="right", on="Name")
    print(df1)
    print(df2)
    print(df3)

结果:

   Name  Age
0  Pete   19
1  John   30
2   Max   24
   Name  Subject  Grade
0  Pete     Math     90
1  Pete  History    100
2  John  English     90
3   Max  History     90
4   Max     Math     80
   Name  Age  Subject  Grade
0  Pete   19     Math     90
1  Pete   19  History    100
2  John   30  English     90
3   Max   24  History     90
4   Max   24     Math     80