【问题标题】:Pandas: Merge many-to-onePandas:多对一合并
【发布时间】:2021-05-28 10:31:24
【问题描述】:

假设我有 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 对它们进行分组,我需要复制它们以便保留所有内容。

【问题讨论】:

标签: python pandas dataframe merge many-to-one


【解决方案1】:

您可以简单地使用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

【讨论】:

    猜你喜欢
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    相关资源
    最近更新 更多