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

如何将连续数值转换为二进制值?及基于BirthYear列生成分类新列

嘿,针对你提出的两个问题,我来给你详细的解决方案,都是日常数据分析里常用的方法:

1. 将连续数值转换为二进制值

这里分两种场景来处理:单个数值转换,以及数据集中整列数值批量转换。

单个连续数值转二进制

Python内置的bin()函数可以直接把整数转成二进制字符串,但会带0b前缀,我们可以通过切片去掉它:

# 示例:把整数23转成二进制
num = 23
binary_result = bin(num)[2:]
print(binary_result)  # 输出: '10111'

# 如果需要固定长度的二进制(比如8位补零),用format函数
binary_8bit = format(num, '08b')
print(binary_8bit)  # 输出: '00010111'

数据集中整列批量转换

假设你用的是Pandas数据集,用apply()方法就能快速处理整列:

import pandas as pd

# 构造示例数据集
df = pd.DataFrame({'ContinuousValue': [10, 25, 33, 47]})

# 转换为二进制字符串(去掉0b前缀)
df['BinaryValue'] = df['ContinuousValue'].apply(lambda x: bin(x)[2:])

# 转换为固定8位的二进制字符串
df['Binary8Bit'] = df['ContinuousValue'].apply(lambda x: format(x, '08b'))

print(df)

输出结果:

ContinuousValue BinaryValue Binary8Bit
0               10        1010    00001010
1               25       11001    00011001
2               33      100001    00100001
3               47      101111    00101111
2. 基于BirthYear列创建年龄分组新列

你说用if函数没成功,应该是在Pandas里用了普通的Python条件语句(非向量化操作),这会报错。下面给你三种可靠的实现方法,都能完美解决需求:

方法1:用Numpy的np.where()(最简洁)

适合简单的二元/三元条件判断,还能直接处理等于1993的边界情况:

import pandas as pd
import numpy as np

# 构造示例数据集
df = pd.DataFrame({'BirthYear': [1980, 1995, 1993, 2000, 1975]})

# 创建新列AgeGroup:>1993为young,<1993为old,等于1993设为middle(可自定义)
df['AgeGroup'] = np.where(
    df['BirthYear'] > 1993, 
    'young', 
    np.where(df['BirthYear'] < 1993, 'old', 'middle')
)

print(df)

方法2:用Pandas的apply()+自定义函数

适合更复杂的多条件判断,可读性更强:

def get_age_group(birth_year):
    if birth_year > 1993:
        return 'young'
    elif birth_year < 1993:
        return 'old'
    else:
        return 'middle'  # 可根据需求修改边界值的处理逻辑

df['AgeGroup'] = df['BirthYear'].apply(get_age_group)

方法3:用Pandas的cut()函数(适合区间分组)

如果后续需要扩展更多年龄区间,这个方法更灵活:

# 定义区间和对应标签:(-∞,1993)→old,[1993,∞)→young(可调整区间包含关系)
df['AgeGroup'] = pd.cut(
    df['BirthYear'],
    bins=[-np.inf, 1993, np.inf],
    labels=['old', 'young'],
    include_lowest=True  # 让1993被包含在第一个区间(old),如果想放young就去掉这个参数
)

以上三种方法都能解决你的问题,优先推荐np.where(),简洁高效;如果条件复杂就用apply()+自定义函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:06:05