如何根据多个列表查找df列中的值,并在新列中返回列表名称



我有一个DataFrame,它有一个名为'color'的列,包含一个颜色列表。

color
红色
黄色
绿色
黄色
紫罗兰

您可以使用numpy.select(由于df中的单词是大写的,但列表中的单词不是大写的,我们可以将它们与str.lower方法对齐(:

colors = df['color'].str.lower()
df['category'] = np.select([colors.isin(primary), colors.isin(secondary)], ['primary', 'secondary'], np.nan)

输出:

color   category
0     Red    primary
1  Yellow    primary
2   Green  secondary
3  Yellow    primary
4  Violet  secondary

具有lambda功能

df['type'] = df.color.apply(lambda col : 'primary' if col.lower() in primary else ('secondary'  if col.lower() in secondary else ''))

试用np.where:

import numpy as np
color["category"] = np.where(color["color"].str.lower().isin(primary), 
"primary", 
"secondary")
>>> color
color   category
0     Red    primary
1  Yellow    primary
2   Green  secondary
3  Yellow    primary
4  Violet  secondary

或者,使用pandas.where:

color["category"] = "secondary"
color["category"] = (color["category"].where(~color["color"].str.lower().isin(primary))
.fillna("primary")
)

相关内容

  • 没有找到相关文章

最新更新