首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果值包含字符串,则设置另一个列值。

如果值包含字符串,则设置另一个列值。
EN

Stack Overflow用户
提问于 2015-06-04 14:30:30
回答 1查看 2.1K关注 0票数 2

我在Pandas中有一个名为“Campaign”的专栏,它的值如下所示:

英国-样车租赁-汽车-宽-MatchPost“

我需要能够拉出字符串包含‘汽车租赁’,并设置另一个产品列为‘汽车’。连字符并不总是将单词Car分开,所以用这种方式找到字符串是不可能的。

如何在Pandas/Python中实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-04 15:06:10

熊猫的一些甜弦功能,你可以使用。

例如,如下所示:

代码语言:javascript
复制
df['vehicle'] = df.Campaign.str.extract('(Car).Rental').str.upper()

这将列载体设置为给定给extract function的正则表达式括号内包含的内容。

此外,str.upper使其大写

额外奖金:

如果您想要为vehicle分配一些不在原始字符串中的内容,您必须再执行几个步骤,但是这次我们仍然使用字符串函数str.contains

代码语言:javascript
复制
is_motorcycle = df.Campaign.str.contains('Motorcycle')
df['vehicle'] = pd.Series(["MC"] * len(df)) * is_motorcycle

这里的第二行创建了一系列"MC“字符串,然后将其隐藏在我们发现的摩托车条目上。

如果要组合多个,我建议您使用map函数:

代码语言:javascript
复制
vehicle_list = df.Campaign.str.extract('(Car).Rental|(Motorcycle)|(Hotel)|(.*)')
vehicle = vehicle_list.apply(lambda x: x[x.last_valid_index()], axis=1)
df['vehicle'] = vehicle.map({'Car':'Car campaign', 'Hotel':'Hotel campaign'})

这首先将数据提取到一行选项列表中。这些案例被分为几个部分,最后一个是Series.apply function所需要的全部捕获。Series.map function是非常直接的,如果捕获的数据是‘汽车’,我们设置‘汽车运动’,‘酒店’我们设置‘酒店运动’等等。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30646679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档