Pandas中DataFrame某列为False时如何更快给另一列赋值True
问题解答
你的原有实现逻辑完全正确,运行效率也属于pandas矢量化操作的最优区间,如果你需要更简洁的写法,可以直接对布尔列做取反操作:
df['flag2'] = ~df['flag']
相关说明
- 这里的
~是pandas中针对布尔Series的逻辑取反运算符,语义上直接对应「将flag列的布尔值反转」,比== False的写法更简洁,可读性也更强 - 两种写法在flag列为纯布尔值(无NaN空值)的场景下,运行结果和性能几乎没有差异
- 不推荐使用
apply+lambda的写法实现该需求,该写法属于逐行遍历操作,运行效率远低于上面两种矢量化实现
完整示例代码
import pandas as pd n1 = range(10) df = pd.DataFrame(n1, columns=['data']) df['flag'] = df.data > 5 df['flag2'] = ~df['flag']
内容的提问来源于stack exchange,提问作者jaried
相关产品推荐
相关产品推荐

