我有这个数据帧:
df = pd.DataFrame({'Player': ['Pele', 'Platini', 'Beckenbauer'],
'Position': ['Forward', 'Midfielder', 'Defender']})
我有这个函数需要应用到数据帧,创建一个新的列"color"。
def color(position):
if position == 'Forward':
color = 'black'
elif position == 'Midfielder':
color = 'white'
elif position == 'Defender':
color = 'red'
return color
我试过:
df['Color'] = df.apply(color, axis=1)
但我得到了错误:
ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index 0')
我该怎么做?
您可以在此处使用pd.Series.map
。创建映射字典并将其提供给pd.Series.map
mapping = {'Forward':'black', 'Midfielder':'white', 'Defender':'red'}
df['Color'] = df['Position'].map(mapping)
Player Position Color
0 Pele Forward black
1 Platini Midfielder white
2 Beckenbauer Defender red
应该是:
df['color'] = df['Position'].apply(color)
或
def color(position):
pos = position['Position']
if pos == 'Forward':
color = 'black'
elif pos == 'Midfielder':
color = 'white'
elif pos == 'Defender':
color = 'red'
return color
df['color'] = df.apply(color, axis=1)
Player Position color
0 Pele Forward black
1 Platini Midfielder white
2 Beckenbauer Defender red