如何用Pandas过滤列中列表元素,仅保留含car的字符串
解决Pandas列表列的过滤问题
你的问题出在原来的lambda表达式上:'car' in x是判断整个列表x里是否存在等于'car'的元素,返回的是布尔值True/False,所以你的content列最后变成了一堆布尔值,自然没实现过滤效果。
要实现保留列表中包含'car'的元素,你需要遍历每个列表里的每个元素,判断每个元素是否包含'car',再把符合条件的元素重新组成列表。用列表推导式结合apply就能搞定:
output['content'] = output['content'].apply(lambda x: [item for item in x if 'car' in item])
举个实际例子:假设你的output数据框原来长这样:
| content |
|---|
| ['I drive a car', 'bike is cool', 'car repair'] |
| ['train station', 'electric car'] |
运行上面的代码后,content列会变成:
| content |
|---|
| ['I drive a car', 'car repair'] |
| ['electric car'] |
如果需要忽略大小写(比如同时匹配'Car'、'CAR'),可以改成:
output['content'] = output['content'].apply(lambda x: [item for item in x if 'car' in item.lower()])
内容的提问来源于stack exchange,提问作者Ghazi
相关产品推荐
相关产品推荐

