python - 如何合并两个 pandas DataFrame 并保留重复值?

标签 python pandas dataframe merge

我有以下两个 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/

相关文章:

python - pandas,将 DataFrame 转换为 MultiIndex'ed DataFrame

Pandas 绘制多个数据帧,一个数据帧产生一条平坦线

python - Pandas - 计算具有可变窗口大小的滚动累积乘积

python - 如何根据条件语句重命名列的元素?

python - 如何使用 pandas 计算字符串在列中出现的次数

python - 我没有正确使用setter方法吗?

python - 谷歌应用程序引擎。如何在应用程序范围内创建常量?

python - Pandas :根据另一个数据框的长度添加列信息

python - 如何使用 python IRC bot 接收文件?

python - 使用 joblib 仅缓存类的某些方法的正确方法