我有两个数据帧(DF1)和(DF2)。我想用值替换(DF2)中与(DF1)的两列上的条件匹配的列

2024-10-02 22:38:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用DataFrame2(DF2)中相应的“Salary”填充DataFrame1(DF1)中的“Salary”列。这些需要匹配“团队”和“球员”。你知道吗

注意:

数据帧是: 大小不一样。 顺序不一样。你知道吗

import pandas as pd


#df 1:

nba_data = {'Team': ['Mavericks', 'Mavericks', 'Mavericks', '', 'NewYorkKnicks17','Houston Rockets', 'NewYorkKnicks17'], 
            'Players': ['Luka Doncic', 'Kristaps Porzingis', 'Jalen Brunson', 'Kristaps Porzingis', 'JR Smith',
                        'James Harden', 'Derrick Rose',],
            'Salary': ['0', '0', '0','0', '0', '0', '0'],
           'Coach': ['Rick Carlisle', 'Rick Carlisle', 'Steve Kerr', 'Phil Jackson', 'Tom Thibideou', '', '']}

nba_df1 = pd.DataFrame(nba_data)

nba_df1


#df2:

nba_data2 = {'Team': ['Mavericks', 'Mavericks', 'Mavericks', 'NewYorkKnicks17', 'NewYorkKnicks17', 'NewYorkKnicks17', 'Houston Rockets'], 
            'Players': ['Luka Doncic', 'Kristaps Porzingis', 'Steph Curry', 'JR Smith', 'Derrick Rose',
                        'Kristaps Porzingis', 'James Harden'],
            'Salary': ['3m', '126m', '0','115m', '0', '20m', '1.5m'],
            'Coach': ['Rick Carlisle', 'Rick Carlisle', 'Steve Kerr', '', 'Tom Thibideou', 'Phil Jackson', '']}


nba_df2 = pd.DataFrame(nba_data2)

nba_df2

所需结果=填写了相应工资的nba\u df1(运行以下命令):

nba_data3 = {'Team': ['Mavericks', 'Mavericks', 'Mavericks', '', 'NewYorkKnicks17','Houston Rockets', 'NewYorkKnicks17'], 
            'Players': ['Luka Doncic', 'Kristaps Porzingis', 'Jalen Brunson', 'Kristaps Porzingis', 'JR Smith',
                        'James Harden', 'Derrick Rose',],
            'Salary': ['3m', '126m', '0','20m', '115m', '1.5m', '0'],
           'Coach': ['Rick Carlisle', 'Rick Carlisle', 'Steve Kerr', 'Phil Jackson', 'Tom Thibideou', '', '']}



nba_df1_adjusted = pd.DataFrame(nba_data3)






Kindly note: this is not a tutorial. - it is a specific question and therefore not a duplicate of a general tutorial. 

Tags: teampddf1ricknbasalaryplayershouston
1条回答
网友
1楼 · 发布于 2024-10-02 22:38:14
agg = pd.merge(nba_df1, nba_df2, on = ['Players', 'Team'], how = 'left')

你的成绩将以薪水计算

编辑: 有点脏,但很管用:

agg = pd.merge(nba_df1, nba_df2[['Team', 'Players', 'Salary']], on = ['Players', 'Team'], how = 'left')
agg2 = pd.merge(nba_df1, nba_df2, on = ['Players', 'Coach'], how = 'left')

merge = pd.merge(agg, agg2, on = ['Players', 'Coach'])

merge['Salary'] = merge['Salary_y_x'].fillna(merge['Salary_y_y'])

相关问题 更多 >