Python 如何将pandas中pandas.series.str.contains方法的结果分配给新列

Python 如何将pandas中pandas.series.str.contains方法的结果分配给新列,python,pandas,string,dataframe,Python,Pandas,String,Dataframe,我有以下代码: 导入熊猫 第1条={ “国家”:[“美国”、“法国”、“西班牙”、“意大利”、“德国”、“南非”、“葡萄牙”、“巴西”], “品种”:[‘灰比诺’、‘白比诺’、‘白混合’、‘长相思’、‘弗拉帕托’、‘葡萄牙红’、‘红混合’、‘黑比诺’], “等级”:[80,85,83,87,88,89,84,86], } df=熊猫。数据帧(dict1) df['Type']=' 我试图做的是遍历每一行,如果一个值在Variety列中包含Red或Noir,则将其分配给名为Red的新值,并将Re

我有以下代码:

导入熊猫
第1条={
“国家”:[“美国”、“法国”、“西班牙”、“意大利”、“德国”、“南非”、“葡萄牙”、“巴西”],
“品种”:[‘灰比诺’、‘白比诺’、‘白混合’、‘长相思’、‘弗拉帕托’、‘葡萄牙红’、‘红混合’、‘黑比诺’],
“等级”:[80,85,83,87,88,89,84,86],
}
df=熊猫。数据帧(dict1)
df['Type']='
我试图做的是遍历每一行,如果一个值在
Variety
列中包含
Red
Noir
,则将其分配给名为
Red
的新值,并将
Red
附加到
Type
列中的索引中


我使用了pandas string contains方法,但它只返回布尔值,当我尝试循环时,它说我不能(当然,因为它们是布尔值)。有人知道如何解决这个问题吗???contains应该返回一个布尔数组。这是因为字符串要么包含子字符串,要么不包含子字符串。如果要覆盖输出的布尔数组为
True
False
的所有实例,则需要将
str.contains
numpy.where
组合:

import numpy as np

df["Type"] = np.where(df["Variety"].str.contains(r"Red|Noir"), "Red", "NOT RED")

print(df)
        Country          Variety  Grade     Type
0           USA       Pinot Gris     80  NOT RED
1        France      Pinot Blanc     85  NOT RED
2         Spain      White Blend     83  NOT RED
3         Italy  Sauvignon Blanc     87  NOT RED
4       Germany         Frappato     88  NOT RED
5  South Africa   Portuguese Red     89      Red
6      Portugal        Red Blend     84      Red
7        Brazil       Pinot Noir     86      Red

np.where
采用布尔数组,并将值赋给
True
False
所在的位置。在这种情况下,我将
“Red”
分配给布尔数组为
True
“NOT Red”
的位置,无论数组为
False

请在您的问题中包括预期的输出。