我有一个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")
)