Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向上采样到熊猫中的每周数据_Python_Pandas - Fatal编程技术网

Python 向上采样到熊猫中的每周数据

Python 向上采样到熊猫中的每周数据,python,pandas,Python,Pandas,我在获取熊猫的低频时间序列时遇到了问题,比如月度或季度数据,然后将其采样到每周频率。比如说, data = np.arange(3, dtype=np.float64) s = Series(data, index=date_range('2012-01-01', periods=len(data), freq='M')) s.resample('W-SUN') 结果是一个到处都是NaN的序列。如果我这样做,基本上也会发生同样的事情: s.reindex(DatetimeIndex(start

我在获取熊猫的低频时间序列时遇到了问题,比如月度或季度数据,然后将其采样到每周频率。比如说,

data = np.arange(3, dtype=np.float64)
s = Series(data, index=date_range('2012-01-01', periods=len(data), freq='M'))
s.resample('W-SUN')
结果是一个到处都是NaN的序列。如果我这样做,基本上也会发生同样的事情:

s.reindex(DatetimeIndex(start=s.index[0].replace(day=1), end=s.index[-1], freq='W-SUN'))
如果将
s
改为使用PeriodIndex编制索引,我将得到一个错误:
ValueError:Frequency M无法重新采样到

我能理解为什么会发生这种情况,因为每周的日期与每月的日期并不完全一致,而且周数可能与月数重叠。不过,我还是想实现一些简单的规则来处理这个问题。特别是,(1)将本月最后一周设置为月值,(2)将本月第一周设置为月值,或(3)将本月所有周设置为月值。实现这一目标的方法可能是什么?我可以想象,我想把它也扩展到两周一次的数据

编辑:我理想情况下希望案例(1)的输出为:

2012-01-01   NaN
2012-01-08   NaN
2012-01-15   NaN
2012-01-22   NaN
2012-01-29   0
2012-02-05   NaN
2012-02-12   NaN
2012-02-19   NaN
2012-02-26   1
2012-03-04   NaN
2012-03-11   NaN
2012-03-18   NaN
2012-03-25   2
我对你的问题作了回答。需要为熊猫添加相关功能

情况3可通过填充法直接实现:

In [25]: s
Out[25]: 
2012-01-31    0
2012-02-29    1
2012-03-31    2
Freq: M

In [26]: s.resample('W', fill_method='ffill')
Out[26]: 
2012-02-05    0
2012-02-12    0
2012-02-19    0
2012-02-26    0
2012-03-04    1
2012-03-11    1
2012-03-18    1
2012-03-25    1
2012-04-01    2
Freq: W-SUN
但是对于其他人来说,你现在必须做一些扭曲,希望在下一个版本之前,github问题能够解决

此外,看起来您还需要即将到来的“span”重采样约定,该约定将从第一个周期开始向上采样,直到最后一个周期结束。我不确定是否有一种简单的方法来确定DatetimeIndex的开始/结束点,但它至少应该存在于PeriodIndex中。

关于你的问题,我做了一个简单的回答。需要为熊猫添加相关功能

情况3可通过填充法直接实现:

In [25]: s
Out[25]: 
2012-01-31    0
2012-02-29    1
2012-03-31    2
Freq: M

In [26]: s.resample('W', fill_method='ffill')
Out[26]: 
2012-02-05    0
2012-02-12    0
2012-02-19    0
2012-02-26    0
2012-03-04    1
2012-03-11    1
2012-03-18    1
2012-03-25    1
2012-04-01    2
Freq: W-SUN
但是对于其他人来说,你现在必须做一些扭曲,希望在下一个版本之前,github问题能够解决


此外,看起来您还需要即将到来的“span”重采样约定,该约定将从第一个周期开始向上采样,直到最后一个周期结束。我不确定是否有一种简单的方法来确定DatetimeIndex的开始点/结束点,但它至少应该存在于PeriodIndex中。

我意识到这样做的一种方法可能是向上采样到每日数据,然后向下采样到每周数据。我仍然有兴趣知道是否有更直接的方法。我意识到这样做的一种方法可能是对每日数据进行采样,然后对每周数据进行采样。不过,我仍然有兴趣知道是否有更直接的方法。感谢您创建github问题。至于给出的重采样示例,不幸的是,它并没有返回我想要的结果。从
ffill
切换到
bfill
可以更接近于什么单元格填充了什么值,但它仍然在4月份进行观察,而在1月份没有观察结果(有关我最感兴趣的日期范围的示例,请参见我在原始帖子上的编辑)。有趣的是,在2月至4月系列中,而不是原来的1月至3月系列中,先进行上采样,然后再进行下采样,返回每月结果。您是否有指向github线程的链接或关于即将推出的“span”功能的其他文档?感谢您创建github问题。至于给出的重采样示例,不幸的是,它并没有返回我想要的结果。从
ffill
切换到
bfill
可以更接近于什么单元格填充了什么值,但它仍然在4月份进行观察,而在1月份没有观察结果(有关我最感兴趣的日期范围的示例,请参见我在原始帖子上的编辑)。有趣的是,在2月到4月的系列中,而不是在原来的1月到3月的系列中,先进行上采样,然后再进行下采样,以返回每月的结果。您是否有关于即将推出的“span”功能的github线程或其他文档的链接?