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

如何为Pandas DataFrame中的唯一元素动态分配统一颜色

为DataFrame唯一元素动态分配统一颜色的解决方案

原代码的问题很明显:它是按DataFrame的总行数来取颜色,导致同一个Item(比如示例里的'X')会被分配不同的颜色,完全达不到“同一元素同色”的需求。

要实现动态给每个唯一Item分配固定颜色,直接按下面的逻辑来:

  1. 先提取Item列的所有唯一值
  2. 给每个唯一值绑定一个专属颜色
  3. 把这个颜色映射批量应用到整个DataFrame

完整代码示例:

import pandas as pd
import plotly.express as px

d = ({                
    'Val' : [5,1,4,-2,8,4,3,10],   
    'Item' : ['X', 'Y', 'A', 'B', 'X','D', 'X', 'E'],                       
})

df = pd.DataFrame(data = d)

# 生成唯一Item到颜色的映射字典
unique_items = df['Item'].unique()
color_palette = px.colors.qualitative.Alphabet
# 若唯一元素数量超过调色板长度,自动循环复用调色板颜色
color_mapping = {item: color_palette[i % len(color_palette)] for i, item in enumerate(unique_items)}

# 给每行分配对应颜色
df['colors'] = df['Item'].map(color_mapping)

这样处理后,不管Item列有多少个唯一值,每个值都会拿到固定的颜色——比如示例里的所有'X'都会用同一个颜色,新增同Item的行也会自动继承这个颜色。如果唯一元素数量超过Alphabet调色板的长度,i % len(color_palette)会自动循环复用调色板里的颜色,避免索引越界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:10:36