最新版本Pandas DataFrame中any()方法的替代方案是什么
核心说明
any()是pandas中用于存在性判断的内置方法,标准返回值为True/False布尔值,作用是判断序列中是否存在至少一个布尔判定为真的元素,该方法从设计上就不承担返回首个非空值的功能,你记忆中的旧版本返回非空值属于对方法行为的记忆偏差。
获取首个非空/真值的替代方案
根据需要过滤的值类型,选择对应写法即可:
- 仅排除
NaN、None类空值,取第一个有效非空值
用pandas内置的first_valid_index()方法直接定位第一个非空值的索引再取值,是性能最优的写法:import pandas as pd df = pd.DataFrame([{"a":"asdfads10", "b":100}, {"a":"10asdfasdf","b":200}]) first_val = df['a'].loc[df['a'].first_valid_index()] # 执行后first_val的值为"asdfads10",即目标首个非空结果 - 需要同时排除空字符串、0、False这类布尔判定为假的值,取第一个真值
先做布尔筛选再取首项即可,建议加判空逻辑避免序列全为假值时报错:# 先筛出所有布尔判定为真的元素 truthy_items = df['a'][df['a'].astype(bool)] # 有符合条件的元素就取第一个,没有就返回None first_truthy_val = truthy_items.iloc[0] if not truthy_items.empty else None
注意事项
不要依赖非稳定版本的非预期方法行为编写业务逻辑,any()的定位就是布尔判断,所有pandas正式稳定版的行为都是统一返回布尔值,后续版本也不会调整这个逻辑。
内容的提问来源于stack exchange,提问作者Mammu yedukondalu
相关产品推荐
相关产品推荐

