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

Pandas DataFrame按条件将年龄区间替换为对应范围随机整数的问题

问题原因

你原来的代码里random.randint(35, 44)只会执行一次,生成单个随机整数,pandas会把这个单值广播到所有匹配AGE == '35-44'的行,所以所有匹配行都被赋了同一个值。


解决方法

方法1:仅处理35-44单个指定区间(匹配你给出的预期效果)

如果只需要替换35-44这一类区间,保留其他区间原值,可以生成和匹配行数相等的随机数列表再赋值:

import random
import pandas as pd

# 统计匹配35-44的行数,生成对应数量的独立随机数
match_num = len(df[df["AGE"] == '35-44'])
df.loc[df["AGE"] == '35-44', 'AGE'] = [random.randint(35, 44) for _ in range(match_num)]

方法2:自动处理所有区间格式的AGE值

如果需要把20-34、45-70等所有区间值都替换成对应区间的随机整数,用自定义函数+apply的方式可以自动适配所有区间:

import random
import pandas as pd

def age_range_to_random(age_str):
    low, high = map(int, age_str.split('-'))
    return random.randint(low, high)

df['AGE'] = df['AGE'].apply(age_range_to_random)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:18:05