gpt4 book ai didi

python - 根据 Pandas 中正则表达式的条件测试创建一个新列

转载 作者:太空宇宙 更新时间:2023-11-04 03:00:36 24 4
gpt4 key购买 nike

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)

但在这种情况下,“标签”列采用整个字符串值:苹果|芒果|香蕉|桃子。我只需要匹配的部分。

最佳答案

我想你需要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

关于python - 根据 Pandas 中正则表达式的条件测试创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41027831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com