2017-01-17 163 views
0

我有一個名爲「完整」的日期格式列中的數據框:2017年1月16日熊貓,按日期範圍分組

我有一個跨越過去三個月許多行,我想將我的數據框分成長達一週的增量,這樣我可以稍後製作一個圖表,顯示每週特定項目的數量,並可視化它的上升或下降。

通常,當我不知道答案時,我手動去了很長的路。在這種情況下,我會說,例如,

weeknumber = 1 
    for day in range(earliest, latest, 8): 
     df[df.complete == day].week = weeknumber 
     weeknumber += 1 

正如你所看到的,我很擔心究竟是如何做到這一點很困惑,因爲我不能確定的正是我想要的,直到我可以玩一些首先輸出並查看甚至可用的工作選項。我搜索了其他的代碼,比如date_range(),但是我的週數只有0,並且不知道我的代碼是錯誤的還是我的日期格式,或者如果我使用的方法是錯誤的等等。其他人說這個groupby不會工作等等等等。

noob的任何幫助?

回答

2

以數據框df爲例。你會想通過做df.complete = pd.to_datetime(df.complete)確保你的complete列是datetime

tidx = pd.date_range('2016-03-31', periods=95) 
df = pd.DataFrame(dict(complete=tidx, A=np.arange(len(tidx)))) 

df.head() 

    A complete 
0 0 2016-03-31 
1 1 2016-04-01 
2 2 2016-04-02 
3 3 2016-04-03 
4 4 2016-04-04 

這些是時間兩種常用技術分組

  • resample

    • 我們通過一個字符串參數,在這種情況下'W'

      df.resample('W', on='complete').mean() 
      
  • pd.TimeGrouper

    • 類似的想法

      df.set_index('complete').groupby(pd.TimeGrouper('W')).sum()