Pandas:基于具有多个值的其他列添加 df 列映射到相同的新列值

Liq*_*ity 5 python dictionary series pandas

我有一个这样的数据框:

df1 = pd.DataFrame({'col1' : ['cat', 'cat', 'dog', 'green', 'blue']})
Run Code Online (Sandbox Code Playgroud)

我想要一个提供类别的新列,如下所示:

dfoutput = pd.DataFrame({'col1' : ['cat', 'cat', 'dog', 'green', 'blue'],
                         'col2' : ['animal', 'animal', 'animal', 'color', 'color']})
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用.loc以下方法效率低下:

df1.loc[df1['col1'] == 'cat','col2'] = 'animal'
df1.loc[df1['col1'] == 'dog','col2'] = 'animal'
Run Code Online (Sandbox Code Playgroud)

我如何结合catdog成为两者animal?这不起作用:

df1.loc[df1['col1'] == 'cat' | df1['col1'] == 'dog','col2'] = 'animal'
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 5

建立你的dict然后做map

d={'dog':'ani','cat':'ani','green':'color','blue':'color'}
df1['col2']=df1.col1.map(d)
df1
    col1   col2
0    cat    ani
1    cat    ani
2    dog    ani
3  green  color
4   blue  color
Run Code Online (Sandbox Code Playgroud)