如何删除pandas.core.series各索引下的非目标项,仅保留指定列表内的值?
实现方法
你已经完成了按分号分割的步骤,接下来只需对每个分割后的列表做元素过滤即可,推荐两种实现方案:
方案1:apply+列表推导(小数据量场景首选,写法简单易懂)
# 你已完成的分割操作 tags = tags.str.split(';') # 过滤保留属于country列表的元素 tags = tags.apply(lambda tag_list: [tag for tag in tag_list if tag in country])
执行后输出的tags完全符合你的预期:
- tags[0] 结果:
['China', 'Brazil'] - tags[1] 结果:
['USA', 'China', 'Asia'] - tags[2] 结果:
['Brazil']
方案2:拆分后聚合(大数据量场景首选,性能远高于逐行apply)
# 分割后将列表拆分为独立行的长表 tags_exploded = tags.str.split(';').explode() # 过滤符合条件的标签后按原索引聚合回列表格式 tags = tags_exploded[tags_exploded.isin(country)].groupby(level=0).agg(list)
内容的提问来源于stack exchange,提问作者brezz
相关产品推荐
相关产品推荐

