将函数应用于DataFrame并创建新列



我有这个数据帧:

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

最新更新