2014-06-13 61 views
3

說我有以下時間系列,從2014-06-01這是一個星期天開始。熊貓 - 選擇每2周重新取樣的開始日期

在文獻[7]:

# 2014-06-01 is Sunday 
df = pd.Series(index=pd.date_range('2014-06-01', periods=30), data=nr.randn(30)) # 
df 

我可以每週重新取樣,開始在星期日和關閉週六:

In [9]: 

df.resample('W-SAT') 
Out[9]: 
2014-06-07 0.119460 
2014-06-14 0.464789 
2014-06-21 -1.211579 
2014-06-28 0.650210 
2014-07-05 0.666044 
Freq: W-SAT, dtype: float64 

好了,現在我想同樣的事情,但每2周,所以我試試這個:

In [11]: 

df.resample('2W-SAT') 
Out[11]: 
2014-06-07 0.119460 
2014-06-21 -0.373395 
2014-07-05 0.653729 
Freq: 2W-SAT, dtype: float64 

哦,輸出是1周,然後2周和2周。這不是我所期望的。我期待第一個索引條目是'2014-06-14'。爲什麼這樣做?我如何獲得前兩週重新採樣?

回答

4

努力的resample的各種選項之後,我可能有一個解釋。該方法resample選擇新的重採樣指數的第一個條目似乎取決於closed選項:

  • closed=leftresample查找最新的可能開始
  • closed=rightresample尋找儘可能早的開始

我將用一個例子說明:

# 2014-06-01 is Sunday 
df = pd.Series(index=pd.date_range('2014-06-01', periods=30), data=range(1 , 31)) # 
df 

以下示例說明了closed=left的行爲。最新的「左側」週六2周間隔的關閉左側發生在2014年5月31日,如由以下內容:closed=right

df.resample('2W-SAT',how='sum', closed='left', label='left') 
Out[119]: 
2014-05-31  91 
2014-06-14 287 
2014-06-28  87 
Freq: 2W-SAT, dtype: int64 

下一個例子說明的行爲,這是一個是我在我的初始文章中不明白的(closed=right默認爲resample)。在右邊關閉的2周間隔的最早的「右側」星期六發生在2014年6月7日,如下所示:

df.resample('2W-SAT',how='sum', closed='right', label='right') 
Out[122]: 
2014-06-07  28 
2014-06-21 203 
2014-07-05 234 
Freq: 2W-SAT, dtype: int64 
+0

我認爲這更多是關於標籤而不是抵消一週的結果,即數字是相同的。 –

-1

2014年6月的第一個星期六是第7個,所以它從第7個開始。 如果你嘗試星期日,它會在6月1日開始如預期。

df.resample('2W-SUN') 
Out[11]: 
2014-06-01 0.739895 
2014-06-15 0.497950 
2014-06-29 0.445480 
2014-07-13 0.767430 
Freq: 2W-SUN, dtype: float64 
+0

OP詢問我期待第一個索引條目是'2014 -06-14'即週日中旬。 –

相關問題