這個問題在這里已經有了答案: 使用 np.select 選擇兩個 pandas 列 (1 個答案) 3 小時前關閉。
我仍在學習 Python 和 Pandas,可以使用一些幫助。我想在現有的 DataFrame 中創建一個新列。
當前資料框:
bballData = {'Name':['Joel', 'Cole', 'Duncan'],
'Team':['PHI', 'ORL', 'MIA'],
'Home':['PHI', 'PHI', 'MIA'],
'Away':['ORL', 'ORL', 'POR']}
df = pd.DataFrame(bballData)
新列將是“對手”。
期望的輸出:
bballDataFinal = {'Name':['Joel', 'Cole', 'Duncan'],
'Team':['PHI', 'ORL', 'MIA'],
'Home':['PHI', 'PHI', 'MIA'],
'Away':['ORL', 'ORL', 'POR'],
'Opponent':['ORL','PHI','POR']}
dfFinal = pd.DataFrame(bballDataFinal)
為了創建這個新專欄“對手”,我希望可以做到以下幾點:
- 如果'Team'值等于'Home'值,那么OPPONENT應該是'Away'值。
在這種情況下,對于球員 1,喬爾,他的球隊是 PHI,主場是 PHI,所以對手應該是“客場”值,ORL。
- 如果“球隊”值等于“客場”值,那么對手應該是“主場”值。
在這種情況下,對于球員 2,Cole,他的球隊是 ORL,而 Away 是 ORL,因此對手應該是“主場”值,PHI。
uj5u.com熱心網友回復:
你可以np.select在這里使用。它評估多個條件并根據哪個條件評估為 True 來選擇結果。因此,例如,如果df['Team']==df['Home']為 True,則從df['Away']etc中選擇。
import numpy as np
df['Opponent'] = np.select([df['Team']==df['Home'], df['Team']==df['Away']], [df['Away'], df['Home']], 'No opponent here')
如果保證對手必須是列出的兩支球隊之一,那么你可以使用np.where. 基本上,這是np.select.
df['Opponent'] = np.where(df['Team']==df['Home'], df['Away'], df['Home'])
輸出:
Name Team Home Away Opponent
0 Joel PHI PHI ORL ORL
1 Cole ORL PHI ORL PHI
2 Duncan MIA MIA POR POR
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416325.html
標籤:
上一篇:洗掉谷歌表格括號之間的大寫字母
下一篇:如何使代碼列印暫停而不是獲勝
