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

Altair含特殊字符编码字段报错:无法匹配数据列求助

解决Altair编码字段不匹配的问题

问题出在你对列名的转义处理上:你用了原始字符串r'U\.S\. ...',但实际DataFrame中的列名是U.S. Product Supplied of Normal Butane (Thousand Barrels per Day)(没有转义的反斜杠),所以Altair找不到对应的列。

解决步骤:

  1. 先确认实际列名:运行print(crude_df.columns)查看DataFrame的列名,确保你用的字段名和实际列名完全一致。
  2. 修改Altair编码:不需要对列名里的.做转义,直接使用实际列名即可,或者显式指定字段类型避免推断问题:

修改后的代码:

import pandas as pd
import altair as alt

crude_df = pd.read_excel(open('PET_CONS_PSUP_DC_NUS_MBBLPD_M.xls', 'rb'),
              sheet_name='Data 1', index_col=None, header=2)  

# 方式1:直接使用实际列名+类型简写
alt.Chart(crude_df.tail(100)).mark_circle().encode(
    x='Date:T',
    y='U.S. Product Supplied of Normal Butane (Thousand Barrels per Day):Q'
)

# 方式2:显式指定字段和类型(更清晰)
alt.Chart(crude_df.tail(100)).mark_circle().encode(
    x=alt.X('Date', type='temporal'),
    y=alt.Y(field='U.S. Product Supplied of Normal Butane (Thousand Barrels per Day)', type='quantitative')
)

说明:

  • 后缀:Q是Altair的简写语法,代表指定该字段为定量类型;:T代表时间类型,帮助Altair正确识别数据类型,避免因类型推断失败报错。
  • 当列名包含特殊字符时,直接使用原始列名字符串即可,不需要额外转义,Altair可以正确识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:05:20