簡體   English   中英

如果值包含字符串,則設置另一個列值

[英]If value contains string, then set another column value

我在Pandas中有一個數據框,其中有一列稱為“廣告系列”,其值如下所示:

“英國樣品汽車租賃汽車匹配競賽”

我需要能夠提取出包含“ Car Rental”一詞的字符串,並將另一個“ Product”列設置為“ CAR”。 連字符並不總是將單詞Car分開,因此以這種方式查找字符串是不可能的。

如何在Pandas / Python中實現呢?

熊貓作為您可以使用的一些可愛的字符串函數

例如,像這樣:

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.apply function Series.map function非常簡單,如果捕獲的數據是“汽車”,我們設置為“汽車活動”,而“酒店”則設置為“酒店活動”等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM