我在Pandas中有一个数据框,其中有一个名为“Campaign”的列,其值如下:
“UK-Sample-Car Rental-Car-Broad-MatchPost”
我需要能够确定该字符串包含“Car Rental”字样,并将另一个Product列设置为“CAR”。连字符并不总是将单词Car分开,因此以这种方式找到字符串是不可能的。
如何在Pandas / Python中实现这一目标?
答案 0 :(得分:4)
pandas作为一些可以使用的甜字符串函数
例如,像这样:
df['vehicle'] = df.Campaign.str.extract('(Car).Rental').str.upper()
这会将列车辆设置为extract function
赋予的正则表达式括号内的内容。
此外str.upper
使其成为大写
如果你想为车辆分配一些不在原始字符串中的东西,你需要再采取一些步骤,但我们仍然使用字符串函数这次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
非常简单,如果捕获的数据是“汽车”,我们会设置“汽车广告系列”和“' Hotel'我们设置了酒店活动'等