我仍然在学习Python和Pandas,可能需要一些帮助。我想在现有的DataFrame中创建一个新列。
当前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)为了创建这个新的专栏“对手”,我希望能够做到以下几点:
如果‘团队’值等于‘主场’值,那么对手应该是‘客场’价值。
在这种情况下,球员1,乔尔,他的球队是PHI和家庭是PHI,所以对手应该是‘客场’价值,ORL。
如果‘团队’值等于‘客场’值,那么对手应该是‘主场’价值。
在这种情况下,对于2号球员,科尔,他的球队是ORL,客场是ORL,所以对手应该是‘主场’价值,PHI。
发布于 2022-01-20 03:28:18
您可以在这里使用np.select。它评估多个条件,并根据哪个条件计算为True来选择结果。因此,例如,如果df['Team']==df['Home']是真,它从df['Away']选择等等。
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 PORhttps://stackoverflow.com/questions/70780443
复制相似问题