![](/img/trans.png)
[英]I have two dataframes DF1 and DF2, what is the best way to append rows that meet a conditional from DF2 to DF1 at specific indices?
[英]I have two dataframes (DF1) and (DF2). I want to substitute values for a column in (DF2) that match criteria on two columns of (DF1)
我想用 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_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.
agg = pd.merge(nba_df1, nba_df2, on = ['Players', 'Team'], how = 'left')
您的結果將在 Salary_y 上
編輯:有點臟,但它有效:
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'])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.