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

Pandas中按需创建colour列并替换NaN值的实现方法

解决方案

可以通过两步处理精准实现需求:先确保colour列存在(不存在则创建并初始化为NaN),再填充所有NaN值为随机颜色代码,完全不会覆盖已有非空值。

完整代码示例

import pandas as pd
import numpy as np
import random

def generate_random_color():
    # 生成随机RGB十六进制颜色代码
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    return f'#{r:02X}{g:02X}{b:02X}'

# 第一步:确保colour列存在,不存在则创建并初始化为NaN
lines['colour'] = lines.get('colour', np.nan)

# 第二步:填充所有NaN值为随机颜色
lines['colour'] = lines['colour'].apply(lambda x: generate_random_color() if pd.isna(x) else x)

关键逻辑说明

  1. 处理列的存在性:
    使用lines.get('colour', np.nan)替代直接赋值lines['colour'] = np.nan。get方法会:

    • 如果colour列已存在,直接返回原列数据(完全保留已有非空值)
    • 如果colour列不存在,自动创建新列并将所有值初始化为NaN
  2. 填充NaN值:
    通过apply遍历每一行的colour值:

    • 若值为NaN,调用generate_random_color()生成随机颜色
    • 若值非空,直接保留原有值

高效替代写法(大数据量场景)

如果处理的数据集行数较多,可批量生成颜色列表结合np.where提升效率:

lines['colour'] = lines.get('colour', np.nan)
# 生成与数据行数匹配的随机颜色列表
color_list = [generate_random_color() for _ in range(len(lines))]
# 批量替换NaN值
lines['colour'] = np.where(lines['colour'].isna(), color_list, lines['colour'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:20:42