You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何互换True与False?DataFrame统计需求求解

解决布尔值互换及统计False数量的方法

为什么--df['allowed']无效

在Python里,布尔值True等价于整数1,False等价于0。--True本质是-(-1)结果还是1(也就是True),--False是-(-0)结果还是0(也就是False),所以这种写法根本没法实现值的互换。

方法一:修改布尔列实现互换

利用布尔值和整数的转换特性,用1减去原布尔值,就能快速把True转成0、False转成1:

df['allowed'] = 1 - df['allowed']
# 之后执行分组求和,得到的就是原数据中False的数量
result = df.groupby('country', as_index=False).sum()

方法二:不修改原数据,直接统计False数量

要是不想改动原DataFrame,直接在分组聚合的时候计算每个国家的False数量更高效:

result = df.groupby('country', as_index=False).agg(
    false_count=('allowed', lambda x: (x == False).sum())
)

或者用更简洁的写法(因为False等价于0,直接统计0的数量):

result = df.groupby('country', as_index=False).agg(
    false_count=('allowed', lambda x: (x == 0).sum())
)

方法三:用numpy做条件转换

如果你的DataFrame列是numpy布尔类型,也可以用numpy的条件判断来转换:

import numpy as np
df['allowed'] = np.where(df['allowed'], 0, 1)

内容的提问来源于stack exchange,提问作者Monsson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:55:18