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

如何用两个列表值之一随机填充Pandas DataFrame列?

给DataFrame添加随机性别列的正确方法

先说说你原代码里的几个问题:

  • 变量名sex和函数名sex重复,直接导致命名冲突,程序逻辑会混乱
  • 函数没有返回值,执行sex()得到的是None,根本没法赋值给新列
  • 你遍历tips['sex']的时候这个列还没创建,会直接触发报错
  • 循环里只是取了个随机值,但没把这些值收集起来返回

下面给你几种可行的实现方式:

方法一:用numpy快速生成(最推荐,效率高)

import numpy as np

# 直接生成和DataFrame行数一致的随机性别数组
tips['sex'] = np.random.choice(['Male', 'Female'], size=len(tips), p=[0.5, 0.5])

size设为tips的行数,p是两种性别的概率,这里各占50%,要是想调整比例改这个参数就行。

方法二:用列表推导式实现

import random

sex_options = ['Male', 'Female']
# 循环生成对应行数的随机值
tips['sex'] = [random.choice(sex_options) for _ in range(len(tips))]

修正你原来的代码版本

要是想保留你原本的函数思路,改完之后是这样:

import random

# 把变量名改成sex_options,避免和函数名冲突
sex_options = ['Male', 'Female']
def generate_sex(num_rows):
    sex_list = []
    # 按行数循环生成随机值并收集
    for _ in range(num_rows):
        sex_list.append(random.choice(sex_options))
    return sex_list

# 传入tips的行数,生成后赋值给新列
tips['sex'] = generate_sex(len(tips))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:49:11