我有一個名為 nflLineups 的主要 DataFrame。
我希望合并另外 3 個資料幀:dfPass、dfRush、dfReceive 與第一個 DF、nflLineups。
到目前為止,我嘗試過的一切都沒有奏效。嘗試追加、連接和合并——合并 how='left'、how='outer'、on = 'Name' 等。
我的目標是有一個大的輸出來合并 Name 上的資料,但保留所有列及其各自的值。
主要輸出應包含以下列:姓名、團隊、職位、passYrds、rushYrds、recYrds。我只想讓統計資料(傳球、沖刺、記錄)在 nflLineups 中玩家姓名旁邊填寫各自的行。并非每個玩家都有每個類別的資料,因此這些值應留空 (n/a)。
我看到 Stack 上有一些合并示例,但還沒有找到可以成功使用的代碼。在過去的 2 天里一直在搞這個,如果可能的話可以使用一些幫助。仍在學習如何合并資料并認為自己是 Python 的新手。
任何幫助將不勝感激。
到目前為止,這是我的代碼:
import pandas as pd
nflLineups = pd.DataFrame([{'Name': 'Teddy', 'Team': 'DEN', 'Position': 'QB'},
{'Name': 'Melvin', 'Team': 'DEN', 'Position': 'RB'},
{'Name': 'Courtland', 'Team': 'DEN', 'Position': 'WR'},
{'Name': 'Tim', 'Team': 'DEN', 'Position': 'WR'},
{'Name': 'Kendal', 'Team': 'DEN', 'Position': 'WR'},
{'Name': 'Noah', 'Team': 'DEN', 'Position': 'TE'},
{'Name': 'Case', 'Team': 'CLE', 'Position': 'QB'},
{'Name': 'D Ernest', 'Team': 'CLE', 'Position': 'RB'},
{'Name': 'Odell', 'Team': 'CLE', 'Position': 'WR'},
{'Name': 'Jarvis', 'Team': 'CLE', 'Position': 'WR'},
{'Name': 'Donovan', 'Team': 'CLE', 'Position': 'WR'},
{'Name': 'Austin', 'Team': 'CLE', 'Position': 'TE'},])
dfPass = pd.DataFrame([{'Name': 'Teddy', 'Team': 'DEN', 'Position': 'QB', 'passYrds': 1500},
{'Name': 'Case', 'Team': 'CLE', 'Position': 'QB', 'passYrds': 1350}])
dfRun = pd.DataFrame([{'Name': 'Teddy', 'Team': 'DEN', 'Position': 'QB', 'rushYrds': 45},
{'Name': 'D Ernest', 'Team': 'CLE', 'Position': 'RB', 'rushYrds': 350}])
dfReceive = pd.DataFrame([{'Name': 'D Ernest', 'Team': 'CLE', 'Position': 'RB', 'recYrds': 68},
{'Name': 'Jarvis', 'Team': 'CLE', 'Position': 'WR', 'recYrds': 250}])
uj5u.com熱心網友回復:
或合并:
df_main = nflLineups.merge(dfPass, how='left', on=['Name', 'Team', 'Position']).merge(dfRun, how='left', on=['Name', 'Team', 'Position']).merge(dfReceive, how='left', on=['Name', 'Team', 'Position'])
輸出:
Name Team Position passYrds rushYrds recYrds
0 Teddy DEN QB 1500.0 45.0 NaN
1 Melvin DEN RB NaN NaN NaN
2 Courtland DEN WR NaN NaN NaN
3 Tim DEN WR NaN NaN NaN
4 Kendal DEN WR NaN NaN NaN
5 Noah DEN TE NaN NaN NaN
6 Case CLE QB 1350.0 NaN NaN
7 D Ernest CLE RB NaN 350.0 68.0
8 Odell CLE WR NaN NaN NaN
9 Jarvis CLE WR NaN NaN 250.0
10 Donovan CLE WR NaN NaN NaN
11 Austin CLE TE NaN NaN NaN
uj5u.com熱心網友回復:
IIUC,一種pandas.DataFrame.groupby.first在pandas.concat.
請注意,我假設Team和Position相同的每個Name。
df = pd.concat([nflLineups, dfPass, dfRun, dfReceive])
df = df.groupby("Name", sort=False).first()
輸出:
Team Position passYrds rushYrds recYrds
Name
Teddy DEN QB 1500.0 45.0 NaN
Melvin DEN RB NaN NaN NaN
Courtland DEN WR NaN NaN NaN
Tim DEN WR NaN NaN NaN
Kendal DEN WR NaN NaN NaN
Noah DEN TE NaN NaN NaN
Case CLE QB 1350.0 NaN NaN
D Ernest CLE RB NaN 350.0 68.0
Odell CLE WR NaN NaN NaN
Jarvis CLE WR NaN NaN 250.0
Donovan CLE WR NaN NaN NaN
Austin CLE TE NaN NaN NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331160.html
上一篇:根據條件從某個值增加資料框列
