python - 如果列表包含任何列表返回匹配字符串
问题描述
我正在尝试创建一个比较两个列表并返回匹配字符串的新列。
我不断收到错误“'list' object has no attribute 'find'”。
我仍然是这方面的新手,所以任何帮助都将不胜感激!
我正在尝试为此使用 python 和 pandas
到目前为止我所拥有的是
raw = pd.read_csv(r"")
brandnames = ['Amana','Maytag']
raw['Brands'] = [k for k in raw['Description'] if brandnames.find(k)]
raw.head()
我希望最终结果有一个名为 Brands 的新列,当 Description 列包含“Amana”字样时,该列会显示“Amana”
太感谢了!
解决方案
列表类型(品牌名称)中没有“查找”方法或属性,因此 Python 会抛出错误。要快速检查类型中的可用属性和方法,您可以使用dir()
,例如:
>>> x = ['abc', 'def']
>>> dir(x)
['__add__', '__class__', '__contains__', '__delattr__', ...
您可能想要的是in
Prune 答案中的运算符。值得考虑的一件事是,只有在找到完全匹配的情况in
下才会返回:True
>>> brandnames = ['Amana', 'Maytag']
>>> 'Amana' in brandnames
True
>>> 'Amana ' in brandnames
False
>>> 'amana' in brandnames
False
>>> 'Amanaa' in brandnames
False
要考虑的另一件事是,您可能需要对返回的结果进行额外的更改,pd.read_csv
然后才能in
对其使用运算符。
>>> some_data = "foo bar baz Maytag"
>>> [i for i in some_data.split(' ') if i in brandnames]
['Maytag']
type()
在您的程序中调用raw
可能会起作用,但如果没有,我建议您查看 Pandas 文档。
推荐阅读
- javascript - 在哪里存储有关已执行内容迁移的信息?
- twilio - 使用两个 Twilio 号码在两方之间进行号码屏蔽
- excel - 使用 If 条件交换两列
- ios - “在自定义 UIView 类中的重写初始化时,在隐式展开可选值时意外发现 nil”
- kubernetes - HelmChart的k3s清理?
- javascript - 为什么 for...of 和 for 循环的行为不同?
- hyperledger-fabric - 当 node.js 结构客户端应用程序在单独的节点上运行时,背书失败
- php - yii2 无法使用 htaccess 访问根子文件夹
- scala - 我可以在 where 或过滤器中有条件吗?
- android - 纹理视图上的文本未平滑