如何设置pandas date_range长度为180匹配时间序列绘图维度
报错原因
绘图时触发x and y must have same first dimension, but have shapes (180,) and (179,)报错,是因为作为x轴的日期序列Waktu长度为179,和长度为180的ENSO、IOD序列长度不匹配。
长度不匹配的根源是date_range的参数设置逻辑问题:freq='1M'代表生成每个自然月最后一天的时间节点,你设置的结束时间为'12/01/2021'(2021年12月1日),该时间点早于2021年12月的最后一天,因此序列只会生成到2021年11月的最后一天,从2007年1月到2021年11月总计179个时间节点,刚好差1条数据。
调整方案
任选以下一种方式修改即可生成180长度的匹配日期序列:
- 方案1:修正结束日期,覆盖到2021年12月的月末节点
import pandas as pd Waktu = pd.date_range(start='01/01/2007', end='12/31/2021', freq='1M') # 执行后可通过print(len(Waktu))校验,输出值为180即符合要求
- 方案2:直接指定生成序列的长度,无需手动计算结束日期,容错率更高
Waktu = pd.date_range(start='01/01/2007', freq='1M', periods=180)
补充提示:如果你的ENSO、IOD数据是按月初统计的记录,可将频率参数改为
freq='MS'(代表每月第一天的时间节点),此时保持原结束时间'12/01/2021'不变,生成的序列刚好是2007年1月到2021年12月共180个月初节点,也能和数据长度匹配。
内容的提问来源于stack exchange,提问作者xopher
相关产品推荐
相关产品推荐

