我有一个名为'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不会工作,等等等。
对菜鸟有什么帮助吗?
答案 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()