我在Pandas中有一个名为“Campaign”的专栏,它的值如下所示:
英国-样车租赁-汽车-宽-MatchPost“
我需要能够拉出字符串包含‘汽车租赁’,并设置另一个产品列为‘汽车’。连字符并不总是将单词Car分开,所以用这种方式找到字符串是不可能的。
如何在Pandas/Python中实现这一点?
发布于 2015-06-04 15:06:10
熊猫的一些甜弦功能,你可以使用。
例如,如下所示:
df['vehicle'] = df.Campaign.str.extract('(Car).Rental').str.upper()这将列载体设置为给定给extract function的正则表达式括号内包含的内容。
此外,str.upper使其大写
额外奖金:
如果您想要为vehicle分配一些不在原始字符串中的内容,您必须再执行几个步骤,但是这次我们仍然使用字符串函数str.contains。
is_motorcycle = df.Campaign.str.contains('Motorcycle')
df['vehicle'] = pd.Series(["MC"] * len(df)) * is_motorcycle这里的第二行创建了一系列"MC“字符串,然后将其隐藏在我们发现的摩托车条目上。
如果要组合多个,我建议您使用map函数:
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是非常直接的,如果捕获的数据是‘汽车’,我们设置‘汽车运动’,‘酒店’我们设置‘酒店运动’等等。
https://stackoverflow.com/questions/30646679
复制相似问题