如何在分组内为Pandas DataFrame行分配唯一颜色?
解决方案
假设你使用Pandas库处理DataFrame,以下是实现需求的具体代码:
1. 构造示例DataFrame
import pandas as pd df = pd.DataFrame({ 'area': ['worlds', 'twisted', 'personnel', 'available', 'available'], 'cluster': [0.0, 2.0, 1.0, 2.0, 2.0] })
2. 定义颜色库与分组分配逻辑
# 自定义可选颜色列表(可根据需求扩展) color_pool = ['red', 'green', 'blue', 'yellow', 'orange'] def assign_unique_color(group): # 提取当前区域内的唯一cluster值 unique_clusters = group['cluster'].unique() # 建立cluster到颜色的映射关系 color_mapping = {cluster: color_pool[i % len(color_pool)] for i, cluster in enumerate(unique_clusters)} # 为每行匹配对应颜色 group['color'] = group['cluster'].map(color_mapping) return group # 按area分组处理,保证每个区域内的颜色分配独立 df = df.groupby('area').apply(assign_unique_color).reset_index(drop=True)
3. 输出结果
运行后得到的DataFrame如下:
| area | cluster | color |
|---|---|---|
| worlds | 0.0 | red |
| twisted | 2.0 | red |
| personnel | 1.0 | red |
| available | 2.0 | red |
| available | 2.0 | red |
若某个area内存在多个不同cluster,会自动分配不同颜色。比如某区域有3个唯一cluster,会依次对应red、green、blue,完全满足"同一区域内cluster颜色唯一、不同区域颜色可重复"的要求。
内容的提问来源于stack exchange,提问作者Axmed
相关产品推荐
相关产品推荐

