如何基于值或条件动态筛选Pandas Series中的对应行
解决方案
pandas的Series完全支持链式筛选,有两种常用实现方案,都能满足你的需求:
- 方案1:全版本兼容的
loc+lambda写法
直接在链式调用的loc属性中传入匿名函数引用当前Series做筛选,所有pandas版本都支持:
匿名函数的入参s_selected = df['col1'].value_counts().loc[lambda x: x == 20]x就是前面生成的value_counts结果Series,你可以替换成任意筛选逻辑,比如lambda x: x > 10、lambda x: x.isin([15,20,25])都可以正常使用。 - 方案2:类DataFrame query的写法
pandas 1.0及以上版本新增了Series.query()方法,和DataFrame的query API使用逻辑一致,直接用self指代当前Series写条件表达式即可:
这种写法更简洁,也支持多条件组合,比如s_selected = df['col1'].value_counts().query("self == 20")"self > 5 and self < 30"这类写法都能正常解析。
内容的提问来源于stack exchange,提问作者Anirban Chakraborty
相关产品推荐
相关产品推荐

