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
我不想按 Subject
和 Grade
对它们进行分组,我需要复制它们以便保留所有内容。
您可以按如下方式使用 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
假设我有 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
我不想按 Subject
和 Grade
对它们进行分组,我需要复制它们以便保留所有内容。
您可以按如下方式使用 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