pandas: GroupBy using TimeGrouper does not work
BUG: TimeGrouper not too friendly with other groups, e.g.
df.set_index('Date').groupby([pd.TimeGrouper('6M'),'Branch']).sum()
should work
Hi everybody,
I found two issues with TimeGrouper:
- TimeGrouper does not work at all:
Let’s take the following example:
df = pd.DataFrame({
‘Branch’ : ‘A A A A A B’.split(),
‘Buyer’: ‘Carl Mark Carl Joe Joe Carl’.split(),
‘Quantity’: [1,3,5,8,9,3],
‘Date’ : [
DT.datetime(2013,1,1,13,0),
DT.datetime(2013,1,1,13,5),
DT.datetime(2013,10,1,20,0),
DT.datetime(2013,10,3,10,0),
DT.datetime(2013,12,2,12,0),
DT.datetime(2013,12,2,14,0),
]})
gr = df.groupby(pd.TimeGrouper(freq=‘6M’))
def testgr(df): print df
gr.apply(testgr)
This will raise the Exception: “Exception: All objects passed were None”
- With previous Panda’s version it was not possible to combine TimeGrouper with another criteria such as “Branch” in my case.
Thank you very much
Andy
About this issue
- Original URL
- State: closed
- Created 11 years ago
- Comments: 20 (12 by maintainers)
You need to set_index as TimeGrouper operates on the index
If you return a custom function then you need to handle the string cases, but you can return pretty much anything you want (make it a Series) to get this kind of functionaility, you function is passed a slice of the original frame