Python 如果DataFrame包含特定字符串,则创建新列

Python 如果DataFrame包含特定字符串,则创建新列,python,pandas,Python,Pandas,我在DataFrame中有一个列,它是一个名称。在这个名称中有一些模式,我想找到它们,并在相同的DataFrame的其他列中创建一个类别。例如: Name name first RB LA a name LB second RB name third name LB fourth 我希望具有相同图案的名称位于同一类别中,并显示在另一列中 我想要的是: Name Example name first RB LA a

我在
DataFrame
中有一个
,它是一个名称。在这个名称中有一些模式,我想找到它们,并在相同的
DataFrame
的其他
列中创建一个类别。例如:

Name 

name first RB LA a 
name LB second
RB name third
name LB fourth 
我希望具有相同图案的名称位于同一类别中,并显示在另一列中

我想要的是:

       Name                  Example          

name first RB LA a          Round Blade category
name LB second              Long Biased category
RB name third               Round Blade category
name LB fourth              Long Biased category
我有一个
DataFrame
,不是一个列表,其中还有其他几列。不仅有两个类别,还有几个类别

我所尝试的:

df.loc[df['Name']=="RB", 'Example'] = "RB category"
但它不起作用,因为它必须是精确匹配的

另一次尝试:

if df[['Name'].str.contains("RB")] : 
    (...)
但它给了我一个错误:

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我试图添加到
.bool()
.any()
,但是当我运行该行时,错误仍然存在,或者什么也没有发生

多谢各位

您可以使用来实现所需的输出


将numpy导入为np
作为pd进口熊猫
df=pd.DataFrame({
“名称”:[“第一名RB LA a”、“第二名LB”、“第三名RB”、“第四名LB”]
})
df[“Example”]=df[“Name”].str.extract(“(LB | RB)”)[0]+“category”

名称示例
0名称第一个RB LA a RB类别
1名磅第二磅类别
2 RB名称第三RB类别
3名称磅第四磅类别
编辑 要更改
示例
列中的类别名称,请使用
.str.replace

df[“示例”]=(df[“示例”]
.str.replace(“RB”,“圆刀片”)
.str.replace(“LB”,“长偏移”)
)

但它不起作用,因为它必须是完全匹配的。为什么不使用
.str.contains()
,那么?str.contains()确实找到了我要查找的匹配项,但我不知道如何使用此函数创建另一个包含我想要的类别的列,因此我提出了这个问题。我尝试了If-conditional,但它给了我一个如上所示的错误。您需要使用
.loc[]
,就像您在第一个代码片段中所做的那样。提取和操作字符串是否比只使用一个检查条件并返回正确类别的函数更麻烦?这仅仅是因为类别名称包含我们正在检查的提取字符串,该字符串看起来非常脆弱和粗糙。@AMC,我认为str.extract是给定khouzam的输入数据(精确匹配)的最简单的解决方案。当然,如果没有精确匹配,str.contains会工作得更好