如何在Astropy生态中合并多个夜间观测的TimeSeries对象?
合并多个Astropy TimeSeries的解决方案
错误原因
你用add_row()的方式不对,这个方法是用来添加单行数据的,不能直接传入整个TimeSeries的批量数据,所以会触发time列的异常。
正确实现方法
Astropy的TimeSeries继承自Table,可以直接用astropy.table.vstack()来按行堆叠多个TimeSeries对象,不需要写入磁盘,步骤如下:
- 导入所需模块
from astropy.timeseries import TimeSeries from astropy.table import vstack
- 批量读取所有CSV文件为TimeSeries并存入列表
# 替换成你的实际文件路径列表 file_paths = ['night1_data.csv', 'night2_data.csv', 'night3_data.csv'] ts_collection = [] for path in file_paths: # 读取单个文件为TimeSeries ts = TimeSeries.read( path, format='ascii.csv', time_column='mjd', time_format='mjd' ) ts_collection.append(ts)
- 合并所有TimeSeries
# 按行堆叠得到合并后的TimeSeries combined_ts = vstack(ts_collection)
补充说明
- 合并后的
combined_ts仍然是标准的TimeSeries对象,保留所有原有的列属性和Time列的时间格式 - 如果你的多个TimeSeries列结构完全一致,
vstack会自动完成合并;如果有列差异,可以通过join_type参数调整合并规则(比如join_type='inner'只保留共有的列)
内容的提问来源于stack exchange,提问作者Lipto
相关产品推荐
相关产品推荐

