使用pvlib调用CEC库光伏组件与逆变器遇KeyError的解决方法
解决CEC组件/逆变器调用KeyError的方案
先找数据库里的精确键名
CEC数据库返回的组件、逆变器名称,和官网显示的格式经常不一样——比如空格变下划线、特殊符号被处理、多了版本后缀之类的,直接抄官网名称肯定会报错。用下面的代码搜出数据库里的真实键名:
查组件的精确名称
modules = pvlib.pvsystem.retrieve_sam('CECMod') # 筛选包含Trina和TSM-595DE20的条目 matched_modules = [name for name in modules.columns if 'Trina' in name and 'TSM-595DE20' in name] print(matched_modules)
运行后会输出所有匹配的组件名,直接拿这个输出的字符串当键用就行。
查逆变器的精确名称
inverters = pvlib.pvsystem.retrieve_sam('CECInverter') # 筛选包含Growatt和33000TL3-US的条目 matched_inverters = [name for name in inverters.columns if 'Growatt' in name and '33000TL3-US' in name] print(matched_inverters)
同样,把输出的结果替换你代码里的逆变器键名。
替换代码里的键名
举个例子,假设上面的代码输出组件名是'Trina_Solar_TSM_595DE20_II',逆变器名是'Shenzhen_Growatt_New_Energy_Co_Ltd__GROWATT_33000TL3-US_480V_',就把代码改成:
module = modules['Trina_Solar_TSM_595DE20_II'] inverter = inverters['Shenzhen_Growatt_New_Energy_Co_Ltd__GROWATT_33000TL3-US_480V_']
常见格式差异提示
- 空格会被替换成下划线
_,冒号、方括号这类特殊符号可能被去掉或者换成下划线 - 公司名称里的连字符可能会被保留或替换,具体以数据库实际存储为准
- 部分组件会在名称末尾加版本标识,比如
_II、_V2
内容的提问来源于stack exchange,提问作者Luis Enrique Orozco Villanueva
相关产品推荐
相关产品推荐

