根据索引和列值连接或合并两个 DataFrame

Joining or merging two DataFrames based on index and column value

我有两个 DataFrame 如下:

df1 = pd.DataFrame({'Group1': [0.5,5,3], 'Group2' : [2,.06,0.9]}, index=['Dan','Max','Joe'])
df2 = pd.DataFrame({'Name' : ['Joe','Max'], 'Team' : ['Group2','Group1']})

我的目标是为考虑列 'Team' 的人的姓名获取正确的值。

所以结果应该是这样的:

我尝试过合并,但失败了,因为我不知道如何在这些条件下合并。

Python 实现目标的最佳方式是什么?

您可以取消堆叠 df1、重置其索引、重命名列并在 NameTeam 上合并:

out = (df1.unstack()
       .reset_index()
       .rename({'level_0':'Team', 'level_1':'Name', 0:'Value'}, axis=1)
       .merge(df2, on=['Name','Team']))

输出:

     Team Name    0
0  Group1  Max  5.0
1  Group2  Joe  0.9