根据索引和列值连接或合并两个 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
、重置其索引、重命名列并在 Name
和 Team
上合并:
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
我有两个 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
、重置其索引、重命名列并在 Name
和 Team
上合并:
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