我在column
中有一个DataFrame
是名字。在此名称中,有一些我要定位的模式,并在其他column
的其他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()
中,但是错误仍然存在或在运行该行时什么也没有发生。
谢谢。
答案 0 :(得分:2)
您可以使用pandas.Series.str.extract
获得所需的输出
import numpy as np
import pandas as pd
df = pd.DataFrame({
"Name": ["name first RB LA a", "name LB second", "RB name third", "name LB fourth"]
})
df["Example"] = df["Name"].str.extract("(LB|RB)")[0] + " category"
Name Example
0 name first RB LA a RB category
1 name LB second LB category
2 RB name third RB category
3 name LB fourth LB category
要在Example
列中更改类别名称,请使用.str.replace
:
df["Example"] = (df["Example"]
.str.replace("RB", "Round Blade")
.str.replace("LB", "Long Biased")
)