熊猫,按日期范围分组

时间:2017-01-17 07:04:38

标签: python pandas

我有一个名为'complete'的数据框,日期格式为:2017-01-16

我有很多行跨越过去三个月,我想将我的数据帧分成一周的增量,这样我以后可以制作一个图表,显示每周特定项目的数量,并可视化它的任何一个上升或下降。

通常当我不知道答案时,我会手动走很远的路。在这种情况下,我会说,例如,

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

正如你所看到的,我对如何做到这一点非常困惑,因为我不能确切地知道我想要什么,直到我可以先播放一些输出并看看哪些工作选项可用。我搜索了其他代码,比如date_range(),但是我的周数只得到0,并且不知道我的代码是错误的还是我的日期格式,或者我是否使用了错误的方法等等,其他人都说groupby不会工作,等等等。

对菜鸟有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

以数据框df为例。您需要complete确保datetime列为df.complete = pd.to_datetime(df.complete)

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()