如何以Pythonic方式通过Pandas .loc实现与列表长度无关的数据筛选?
解决方案
直接使用Pandas的isin()方法即可,这是最Pythonic且简洁的写法,无需根据列表长度编写分支代码:
products_selected = ["Apple", "Banana", "Strawberry"] data = data.loc[data.PRODUCT.isin(products_selected)]
原理说明
data.PRODUCT.isin(products_selected)会生成一个布尔类型的Series,每个元素对应原DataFrame的一行,标记该行的PRODUCT值是否存在于products_selected列表中。- 将这个布尔Series传入
.loc,就能直接筛选出所有符合条件的行——无论products_selected列表长度是1还是N,代码都无需修改。
对比你原来的分支写法,这种方式既减少了冗余代码,也更贴合Pandas的惯用语法,可读性更强。
内容的提问来源于stack exchange,提问作者Martha's Vineyard
相关产品推荐
相关产品推荐

