根据熊猫正则表达式的条件测试创建一个新列

流浪汉

Python和Pandas的新手。

我想测试字符串是否在列中,如果条件满足字符串值,则创建一个新列。

例如

我有一个df:

df = pd.DataFrame({'foodstuff':['apple-martini', 'apple-pie', 'lemon-merengue', 'strawberry-tart'], 'type':['cocktail', 'dessert', 'dessert', 'dessert']})

我有两个正则表达式字符串:

fruit = "apple|mango|banana|peach"

recipe = "cocktail|dessert|appetizer"

我要满足以下条件:

df['foodstuff'].str.contains(fruit, case = False) & (df['type'].str.contains(recipe, case = False))

在这种情况下,输出如下所示:

pd.DataFrame({'foodstuff':['apple-martini', 'apple-pie', 'lemon-merengue', 'strawberry-tart'], 'type':['cocktail', 'dessert', 'dessert', 'dessert'], 'tag':['apple', 'apple', np.nan, np.nan ]}) 

我正在尝试这样做:

df['tag'] = np.where(df['foodstuff'].str.contains(fruit), fruit, np.nan)

但在这种情况下,“标签”列将使用整个字符串值:apple|mango|banana|peach我只需要匹配的部分。

耶斯列尔

我认为您需要str.extract

fruit = "apple|mango|banana|peach"
df['tag'] = df.foodstuff.str.extract('('+fruit+')', expand=False)
print (df)
         foodstuff      type    tag
0    apple-martini  cocktail  apple
1        apple-pie   dessert  apple
2   lemon-merengue   dessert    NaN
3  strawberry-tart   dessert    NaN

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫 - 用正则表达式条件列引用

根据正则表达式创建新变量

根据针对正则表达式熊猫检查的现有列填充新列

正则表达式与列熊猫

熊猫:使用正则表达式更新条件列

正则表达式在熊猫列上创建新列

根据正则表达式匹配创建新列

使用正则表达式熊猫添加新列

在正则表达式中如何匹配多个或条件但排除一个条件

尝试为一维条码创建一个正则表达式(RegexIterator)

正则表达式:匹配所有内容,但有一个新的空行

正则表达式对另一个正则表达式的匹配结果使用条件

创建一个与 jQuery 一起使用的正则表达式验证

Javascript根据正则表达式条件将一个对象的键和值添加到另一个对象

SparkSQL 根据表达式创建一个新列

使用一个正则表达式测试多个单词

python用正则表达式创建新列

如何使用 str 检测正则表达式创建一个带有 tidyverse 的新列

使用正则表达式匹配一列中的模式并根据列属性名称创建一个新列

如何使用正则表达式创建一个新的 json,它是使用 javascript 的其他 json 的子集?

需要一个可以解决下面提到的条件的正则表达式

货币的正则表达式 - 缺少一个条件

如何根据一个正则表达式产生正面或负面的响应?

正则表达式 - 如何创建一个表达式来呈现用逗号括起来的结果?

正则表达式检查是否基于一个条件满足其他条件

如何根据条件创建动态正则表达式?

正则表达式匹配一个条件,除非它是一个标签

根据匹配的正则表达式创建列值

如何根据 R 中的正则表达式匹配创建新的列数据