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

如何在Pandas中将数据列的奇数转换为布尔值?

解决Pandas中奇偶值转布尔列的问题

嘿,我来帮你搞定这个问题!你之前的代码出问题是因为对Pandas Series的布尔处理逻辑搞错啦——直接用bool()会把整个Series转换成单一的布尔值(只要Series里有非零元素就会返回True),再用not取反的话,得到的只是一个全局的True/False,没法对应每一行的数据。

下面给你几种高效的解决方案:

方法1:取模后判断非零(最直观)

利用奇数对2取模结果为1(非零),偶数取模结果为0的特性,直接判断是否不等于0:

data["is_odd"] = data["A"].mod(2) != 0

方法2:位运算(效率更高)

位运算比取模运算更快,通过判断数字的二进制最后一位是否为1(奇数的最后一位是1,偶数是0):

# 写法1:明确判断
data["is_odd"] = (data["A"] & 1) == 1
# 写法2:更简洁,Pandas会自动把1转成True,0转成False
data["is_odd"] = data["A"] & 1

方法3:apply自定义函数(适合理解逻辑)

如果想更清晰地看到每一行的处理逻辑,可以用apply配合lambda函数:

data["is_odd"] = data["A"].apply(lambda x: x % 2 != 0)

验证效果

我们用测试数据跑一下:

import pandas as pd
data = pd.DataFrame({"A": [1, 2, 3, 4]})
# 任选一种方法,比如方法1
data["is_odd"] = data["A"].mod(2) != 0
print(data)

输出结果完全符合你的需求:

A  is_odd
0  1    True
1  2   False
2  3    True
3  4   False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:13:31