Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过比较列表中的值是否为字符串来填充列_Python_Pandas - Fatal编程技术网

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

Python 通过比较列表中的值是否为字符串来填充列,python,pandas,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",

我感谢你的帮助

我有两个数据集:

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"]})
我需要在数据['model']中填充模型值,条件是标题中的字符串包含模型字符串,否则该列中的值应保持占位符

我试着用一个列表来理解,但它不起作用

mod = models["model"].tolist()
title = data['title']
data['model'] = pd.Series([m for m in mod for t in title if m in]
我还尝试使用“str.contains”,这是一种新的方法:

for m in mod:
    if title.str.contains(m):
        data['model'] = m
但这也不像我预期的那样有效。有办法吗?
提前感谢。

请显示您的预期输出。您接受的答案效率很低。有了预期输出的一点提示(如我所要求的),您会得到更好的解决方案。@cs95,我接受了答案,因为这是一个有效的解决方案。你能详细说明你所说的低效是什么意思吗?正如我所描述的,很明显我期望得到什么。如果模型数据集中的模型值位于标题字符串中,则将该值放在数据数据集中模型列的相应行中,否则,请保留占位符。如果您认为您有更好的解决方案,请随时提供您的解决方案,并解释您为什么声称它更好,我将接受您的答案,以便有相同问题的人能够找到最佳和最有效的解决方案。是的,这对我来说是显而易见的,对其他人来说也是显而易见的,因为您接受了答案,但我们仍然要求问题有一个清晰的答案,清楚地显示输入和预期输出(此处缺少)。在性能方面,@cs95,谢谢你,我以后会考虑的。但是,请随意添加您的解决方案。
mod = models["model"]
data["model"] = data["title"].map(lambda s: next((m for m in mod if m in s), "placeholder"))