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

在Pandas中为DataFrame添加时间戳时遇ValueError错误求助

问题分析与解决

错误原因

你创建DataFrame时,minusMeans的形状是200行×3600列,但传入的index=spectraTimeStamp长度为3600。Pandas默认将数组的每一行对应一个索引元素,这要求数组行数必须和索引长度一致,当前两者不匹配,因此抛出形状错误。

解决步骤

1. 修正时间戳维度(常规场景)

你的数据是200次频率扫描(行)、每次扫描含3600个频率点(列),时间戳应当对应200次扫描的时间,而非3600个频率点。需生成200个时间戳:

from astropy.io import fits
import pandas as pd

hdu = fits.open(file)
data = hdu[0].data
minusMeans = data - data.mean()
freqs = hdu[1].data['Frequency'][0]

# 生成对应200次扫描的时间戳,替换start_time/end_time为你的实际时间
spectraTimeStamp = pd.date_range(start=start_time, end=end_time, periods=200)

# 行对应扫描时间,列对应频率点
finalData = pd.DataFrame(minusMeans, index=spectraTimeStamp, columns=freqs)

2. 转置数据(特殊场景)

若时间戳确实对应3600个频率点,需转置数据让行数匹配索引长度:

# 转置数据为3600行×200列,匹配索引长度
finalData = pd.DataFrame(minusMeans.T, index=spectraTimeStamp)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:13:11