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

SkyCoord报错:list/Series对象无SkyCoord属性 循环查询Simbad恒星问题

报错根因
  • 核心问题是变量名冲突覆盖:你最初导入时将astropy.coordinates模块重命名为coord,后续你定义存储恒星坐标的列表时也用了coord作为变量名,此时全局作用域内的coord变量已经从模块对象被替换为普通列表,调用coord.SkyCoord自然会触发列表无该属性的报错。
  • 后续原有单星测试代码也报错的原因是:Jupyter等交互式环境的变量是全局共享的,错误代码块运行后已经修改了全局coord的指向,只有重启内核清空全局变量才会恢复。你之前遇到的'Series'对象无对应属性的报错也是同一原因,是当时你给和模块/类同名的变量赋值了Series对象导致的覆盖。
修复方法
  1. 重命名存储坐标的列表,避免和导入的模块名重名,比如改为star_coords、coord_list均可
  2. 你的C中存储的元素本身已经是SkyCoord类型,不需要反复嵌套SkyCoord()做类型转换,直接传入查询方法即可,减少冗余代码
修改后可运行的参考代码
from astroquery.simbad import Simbad
from astroquery import open_exoplanet_catalogue as oec
from astroquery.open_exoplanet_catalogue import findvalue
import astropy.units as u
import astropy.coordinates as coord
from astropy.coordinates import SkyCoord
import numpy as np
import pandas as pd

# 初始化存储结果的DataFrame
exoplanet_stars = pd.DataFrame(columns=["恒星名称", "系外行星数量", "系外行星ID"])

ie = [ID[0], ID[1]]
# 修改变量名,避免和导入的coord模块冲突
coord_list = [C[0], C[1]]

for star_name, star_coord in zip(ie, coord_list):
    # 直接传入已有的SkyCoord对象即可,无需重复转换
    simbad_res = Simbad.query_region(star_coord, radius="0d0m0.02s")
    # 此处添加你筛选行星、统计数量、提取ID写入DataFrame的逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:36:04