我有 2 个数据框(df1 和 df2),它们看起来像这样:
df1
index gameID Team A B C
0 0001 Lakers 10 100 90
1 0001 Clippers 20 105 91
2 0002 Celtics 30 110 92
3 0002 Warriors 40 115 93
4 0003 Suns 10 100 94
5 0003 Jazz 20 105 95
6 0004 Heat 30 110 96
7 0004 Magic 40 115 97
df2
index gameID Team Player D
0 0001 Lakers Lebron 30.5
1 0001 Clippers Harden 29.9
2 0002 Celtics Tatum 31.2
3 0002 Warriors Curry 29.8
4 0003 Suns Durant 40.6
5 0003 Jazz Clarkson 21.5
6 0004 Heat Butler 25.5
7 0004 Magic Banchero 27.8
8 0005 Mavs Doncic 39.9
9 0005 Raptors Quickley 19.6
我希望能够将列 'A' 'B' 和 'C' 复制到 df2,这样,如果这些列具有匹配的 gameID 和 Team 列,那么它会仅复制这些列,因此结果将是:
df2
index gameID Team Player D A B C
0 0001 Lakers Lebron 30.5 10 100 90
1 0001 Clippers Harden 29.9 20 105 91
2 0002 Celtics Tatum 31.2 30 110 92
3 0002 Warriors Curry 29.8 40 115 93
4 0003 Suns Durant 40.6 10 100 94
5 0003 Jazz Clarkson 21.5 20 105 95
6 0004 Heat Butler 25.5 30 110 96
7 0004 Magic Banchero 27.8 40 115 97
8 0005 Mavs Doncic 39.9 NaN NaN NaN
9 0005 Raptors Quickley 19.6 NaN NaN NaN
我已经尝试过将
dict
与 map
一起使用,但 dict 使用键值对,并且我想要处理的条件使用超过 1 列
pd.merge()
用于在公共列 gameID
和 Team
上将 df2 与 df1 合并。[['gameID', 'Team', 'A', 'B', 'C']]
用于仅从 df1 中选择相关列。import pandas as pd
df1 = pd.DataFrame({
'gameID': ['0001', '0001', '0002', '0002', '0003', '0003', '0004', '0004'],
'Team': ['Lakers', 'Clippers', 'Celtics', 'Warriors', 'Suns', 'Jazz', 'Heat', 'Magic'],
'A': [10, 20, 30, 40, 10, 20, 30, 40],
'B': [100, 105, 110, 115, 100, 105, 110, 115],
'C': [90, 91, 92, 93, 94, 95, 96, 97]
})
df2 = pd.DataFrame({
'gameID': ['0001', '0001', '0002', '0002', '0003', '0003', '0004', '0004', '0005', '0005'],
'Team': ['Lakers', 'Clippers', 'Celtics', 'Warriors', 'Suns', 'Jazz', 'Heat', 'Magic', 'Mavs', 'Raptors'],
'Player': ['Lebron', 'Harden', 'Tatum', 'Curry', 'Durant', 'Clarkson', 'Butler', 'Banchero', 'Doncic', 'Quickley'],
'D': [30.5, 29.9, 31.2, 29.8, 40.6, 21.5, 25.5, 27.8, 39.9, 19.6]
})
df_merged = pd.merge(df2, df1[['gameID', 'Team', 'A', 'B', 'C']], on=['gameID', 'Team'], how='left')
print(df_merged)