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

Pandas修改SEASON列为字符串后Plotly绘图仍识别为日期格式怎么办

问题根因

柱状图仍识别SEASON为日期格式,来自两个核心原因:

  • 使用.values.astype('str')转换datetime类型列时,NumPy会默认输出YYYY-MM-DD格式的标准日期字符串,Plotly Express自带的自动类型推断逻辑会扫描字符串内容,只要匹配日期格式就会自动将列重新解析回时间类型,不会按普通字符串渲染
  • 转换后未做类型校验:如果原SEASON列是带时区的datetime64类型,直接调用.values.astype('str')可能无法正确覆盖DataFrame列的原有类型,转换实际未生效
排查步骤
  • 执行print(player["SEASON"].dtype),确认转换后列的dtype是否为object(pandas存储字符串的默认类型),如果输出仍为datetime64[ns]相关类型,说明转换操作未生效
  • 如果dtype已经是字符串类型,执行print(player["SEASON"].head())查看值格式,若输出为标准日期样式字符串,即可确认是Plotly自动类型推断导致的识别异常
解决方法

二选一即可:

方案1:修改SEASON列格式,绕过日期识别

如果需要按NBA常用的赛季格式(如2023-24)展示,可直接将原始日期转换为赛季字符串,既符合业务展示习惯,也不会被识别为日期:

import pandas as pd
# 先确保SEASON列是标准datetime格式
player["SEASON"] = pd.to_datetime(player["SEASON"])
# 拼接为YYYY-YY格式的赛季字符串
player["SEASON"] = player["SEASON"].dt.year.astype(str) + "-" + ((player["SEASON"].dt.year + 1) % 100).astype(str).str.zfill(2)

如果不需要调整展示格式,只想按原有日期值作为分类展示,可给字符串末尾加一个空格,破坏标准日期格式,绕过Plotly的自动解析:

player["SEASON"] = player["SEASON"].astype(str) + " "

方案2:绘图时强制指定x轴类型(最简便)

不需要修改原始数据,直接在绘图配置中强制指定x轴为分类类型,禁止Plotly自动解析日期:

import plotly.express as px
line_graph = px.bar(data_frame=player, x='SEASON', y="PTS")
# 强制x轴为分类轴,按原始值顺序渲染,不做时间格式转换
line_graph.update_xaxes(type='category')
line_graph.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:36:14