我有一个这样的dataframe:
df1 = pd.DataFrame({'col1' : ['cat', 'cat', 'dog', 'green', 'blue']})
我需要一个新列来给出类别,像这样:
dfoutput = pd.DataFrame({'col1' : ['cat', 'cat', 'dog', 'green', 'blue'],
'col2' : ['animal', 'animal', 'animal', 'color', 'color']})
我知道我可以使用.loc
低效地完成它:
df1.loc[df1['col1'] == 'cat','col2'] = 'animal'
df1.loc[df1['col1'] == 'dog','col2'] = 'animal'
如何将cat
和dog
合并为animal
?这不起作用:
df1.loc[df1['col1'] == 'cat' | df1['col1'] == 'dog','col2'] = 'animal'
3条答案
按热度按时间kx7yvsdv1#
构建
dict
,然后执行map
plicqrtu2#
由于多个项目可能属于一个类别,我建议您从字典Map类别到项目开始:
你可能会发现这更容易维护。* 然后 * 使用字典理解来反转你的字典,后面跟着
pd.Series.map
:您也可以使用
pd.Series.replace
,但通常是less efficient。dba5bblo3#
您也可以尝试使用np.select,如下所示:
我发现即使在非常大的 Dataframe 中,这种方法也能很快地工作