Altair含特殊字符编码字段报错:无法匹配数据列求助
解决Altair编码字段不匹配的问题
问题出在你对列名的转义处理上:你用了原始字符串r'U\.S\. ...',但实际DataFrame中的列名是U.S. Product Supplied of Normal Butane (Thousand Barrels per Day)(没有转义的反斜杠),所以Altair找不到对应的列。
解决步骤:
- 先确认实际列名:运行
print(crude_df.columns)查看DataFrame的列名,确保你用的字段名和实际列名完全一致。 - 修改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
相关产品推荐
相关产品推荐

