通过比较列表中的值是否在字符串中来填充列

时间:2019-06-08 23:58:20

标签: python pandas

感谢您的帮助。

我有两个数据集:

models = pd.DataFrame({"manufacturer":['Nokia', 'Samsung', 'Motorola', 'Nokia', 'Alcatel', 'Nokia 5'],
               "model":['3310', 'S4', 'Moto G', 'N1', 'Pixy', 'Nokia 5']})

data = pd.DataFrame({"title":["Brand New Nokia 3310", "Old Samsung S4", "Cool Motorola Moto G", 'New Alcatel', 'Old Nokia 5'],
                "manufacturer":['Nokia', "Samsung", "Motorola", 'Alcatel', 'Nokia'],
                "model":["placeholder", "placeholder", "placeholder", "placeholder", "placeholder"]})

我需要根据条件来填充data ['model']中的模型值,条件是标题中的字符串包含模型字符串,否则该列中的值应保留占位符。

我试图通过列表理解来做到这一点,但是它不起作用。

mod = models["model"].tolist()
title = data['title']
data['model'] = pd.Series([m for m in mod for t in title if m in]

我也尝试使用pandas方法“ str.contains”:

for m in mod:
    if title.str.contains(m):
        data['model'] = m

但是这也没有按我预期的那样工作。有办法吗? 预先感谢。

1 个答案:

答案 0 :(得分:1)

mod = models["model"]
data["model"] = data["title"].map(lambda s: next((m for m in mod if m in s), "placeholder"))