我有以下两个 pandas DataFrame:
第一个:
df1 = pd.DataFrame({'Name':['John','John','John','Paul','Paul','Jimmy'], 'Book':['B1','B2','B1','B3','B4','B3']})
╔═══════╦══════╗
║ Name ║ Book ║
╠═══════╬══════╣
║ John ║ B1 ║
║ John ║ B2 ║
║ John ║ B1 ║
║ Paul ║ B3 ║
║ Paul ║ B4 ║
║ Jimmy ║ B3 ║
╚═══════╩══════╝
第二个:
df2 = pd.DataFrame({'Name':['John','Paul','Jimmy'], 'Age':[25,18,28]})
╔═══════╦═════╗
║ Name ║ Age ║
╠═══════╬═════╣
║ John ║ 25 ║
║ Paul ║ 18 ║
║ Jimmy ║ 28 ║
╚═══════╩═════╝
我希望结果是:
╔═══════╦══════╦═════╗
║ Name ║ Book ║ Age ║
╠═══════╬══════╬═════╣
║ John ║ B1 ║ 25 ║
║ John ║ B2 ║ 25 ║
║ John ║ B1 ║ 25 ║
║ Paul ║ B3 ║ 18 ║
║ Paul ║ B4 ║ 18 ║
║ Jimmy ║ B3 ║ 28 ║
╚═══════╩══════╩═════╝
即,将“Age”列添加到第一个 DataFrame 中,使用“Name”列作为键,并保留重复的名称。
最佳答案
很简单:
df1 = pd.DataFrame({'Name':['John','John','John','Paul','Paul','Jimmy'], 'Book':['B1','B2','B1','B3','B4','B3']})
df2 = pd.DataFrame({'Name':['John','Paul','Jimmy'], 'Age':[25,18,28]})
df1.merge(df2)
Out[22]:
Name Book Age
0 John B1 25
1 John B2 25
2 John B1 25
3 Paul B3 18
4 Paul B4 18
5 Jimmy B3 28
关于python - 如何合并两个 pandas DataFrame 并保留重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58696775/