我正在尝试创建一个新列来比较两个列表并返回匹配的字符串
我不断得到错误“'list'对象没有'find'属性”
我仍然是一个新手在这方面,所以任何帮助将非常感谢
我试着用Python和熊猫来做这个
到目前为止我所知道的是
raw = pd.read_csv(r"")
brandnames = ['Amana','Maytag']
raw['Brands'] = [k for k in raw['Description'] if brandnames.find(k)]
raw.head()
我希望最终的结果是有一个新的列命名为品牌,说'阿曼娜'时,描述列包含的话'阿曼娜'
非常感谢
我不明白为什么你会感到困惑。
find
文档清楚地说明了它是一个字符串方法,而不是列表方法。此外,它还返回一个索引。您已经发明了一个find
方法,它返回一个布尔值,是类list
的新元素我想你想要的是
更直接地说,你可以通过设置交集来实现。将两个名称列表转换为集合,取交叉点,然后转换为列表
列表类型(brandnames)中没有“find”方法或属性,因此Python抛出了一个错误。要快速检查类型中可用的属性和方法,可以使用
dir()
,例如:你可能想要的是Prune答案中的
in
操作符。值得考虑的一点是in
只会返回True
,如果找到一个精确的匹配:另一件需要考虑的事情是,在对
pd.read_csv
返回的结果使用in
运算符之前,可能需要对其进行额外的更改在程序中对
raw
调用type()
可能有用,但如果不行,我建议您查看一下Pandas文档相关问题 更多 >
编程相关推荐