所以我之前为污染数据集运行了一些代码,并且代码运行得很好。现在,我收到此错误: 颜色必须是 aRGB 十六进制值
我唯一的代码行如下:
pollution_jawn = pd.read_excel('ObservationData_irkfioc copy.xlsx')
我不知道问题是什么,我什至尝试从我的 jupyterhub 目录中删除这个文件并上传它,但即使这样也不起作用。
正如另一个答案所提到的,解决方法是在
engine='xlrd'
中指定 pd.read_excel
。但是,要使其正常工作,xlrd 必须为 1.2.0(或更低版本)版本。
要下载特定版本(使用 anaconda),请在终端中输入
conda install -c anaconda xlrd=1.2.0
。
完成后,这应该可以工作(请注意,您将得到一个
FutureWarning
,因为此版本的 xlrd 已弃用:
pollution_jawn = pd.read_excel('ObservationData_irkfioc copy.xlsx', engine='xlrd')
.xlsx 文件可能保存在旧版本的 Excel 中。对我来说有效的方法是简单地在新版本的 Excel 中打开 .xlsx 文件,然后再次保存。之后就没有再出现这个错误了。
我更新到 pandas 1.2.3 后也遇到了类似的问题。对我有用的是指定
pd.read_excel(path_to_xlsx, engine='xlrd')
我怀疑我加载的 xlsx 文件在某处使用了较旧的 xls 标准,因为选项“
xlrd
支持旧式 Excel 文件 (.xls)”(来自 docs)
有类似的问题,但找到了简单的解决方案,只需在 openpyxl/styles/colors.py 中的 RGB 类中重新分配方法 set,捕获“颜色必须是 aRGB 十六进制值”的错误并设置另一种颜色,如白色:
from openpyxl.styles.colors import WHITE, RGB
__old_rgb_set__ = RGB.__set__
def __rgb_set_fixed__(self, instance, value):
try:
__old_rgb_set__(self, instance, value)
except ValueError as e:
if e.args[0] == 'Colors must be aRGB hex values':
__old_rgb_set__(self, instance, WHITE) # Change color here
RGB.__set__ = __rgb_set_fixed__
希望它能帮助别人