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

散点图报错:列表索引需为整数/切片而非浮点数,无法生成图表求助

问题原因与解决方案

错误根源

报错List indices must be integers or slices, not float的核心原因是:df.Monday.map(...)的返回结果中存在浮点数类型的NaN值。当原数据的Monday列有缺失值(空值),或者包含不在映射字典({"Monday":0,...,"Sunday":6})中的内容时,map()函数会返回NaN,而NaN属于浮点数类型,用它去索引sns.color_palette()生成的颜色列表就会触发类型错误。

修复方案

方案1:清理异常数据(推荐)

直接过滤掉Monday列中为空或不匹配映射规则的行,确保映射后结果全为整数:

# 过滤掉无效行(仅保留星期几的有效取值)
valid_df = df[df.Monday.isin(["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"])]
# 生成整数类型的星期索引
day_indices = valid_df.Monday.map({"Monday": 0, "Tuesday": 1, "Wednesday": 2, "Thursday": 3, "Friday": 4, "Saturday": 5, "Sunday": 6}).astype(int)
# 同步过滤embedding(假设embedding与原DataFrame行一一对应)
valid_embedding = embedding[valid_df.index]

# 绘制散点图
plt.scatter(
    valid_embedding[:, 0],
    valid_embedding[:, 1],
    c=[sns.color_palette()[x] for x in day_indices]
)

plt.gca().set_aspect('equal', 'datalim')
plt.title('UMAP projection of the Uber dataset', fontsize=24);

方案2:保留异常数据并分配默认颜色

如果不想丢弃数据,给异常/缺失值分配一个默认整数索引,并扩展调色板:

day_mapping = {"Monday": 0, "Tuesday": 1, "Wednesday": 2, "Thursday": 3, "Friday": 4, "Saturday": 5, "Sunday": 6}
# 填充缺失值为7,强制转为整数类型
day_indices = df.Monday.map(day_mapping).fillna(7).astype(int)
# 扩展调色板,给异常值添加灰色作为区分
color_palette = sns.color_palette() + ["#888888"]

plt.scatter(
    embedding[:, 0],
    embedding[:, 1],
    c=[color_palette[x] for x in day_indices]
)

plt.gca().set_aspect('equal', 'datalim')
plt.title('UMAP projection of the Uber dataset', fontsize=24);

额外检查点

  • 确认df.Monday列的列名是否正确:从映射内容来看,这列应该是存储星期几的字段,可能实际列名并非Monday,而是day之类的名称,建议先打印df.columns确认列名匹配。

内容的提问来源于stack exchange,提问作者Anderson André

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:50:29