Pandas: Combine TimeGrouper с другим аргументом Groupby

У меня есть следующий DataFrame:

df = pd.DataFrame({ 'Branch' : 'AAAAA 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,2,10,0), DT.datetime(2013,12,2,12,0), DT.datetime(2013,12,2,14,0), ]}) from pandas.tseries.resample import TimeGrouper 

Как я могу группировать эти данные по филиалу и в течение 20 дней с помощью TimeGrouper?

Все мои предыдущие попытки не удались, потому что я не мог комбинировать TimeGrouper с другим аргументом в функции groupby.

Я был бы очень признателен за вашу помощь.

спасибо

Энди

2 Solutions collect form web for “Pandas: Combine TimeGrouper с другим аргументом Groupby”

Из обсуждения здесь: https://github.com/pydata/pandas/issues/3791

 In [38]: df.set_index('Date').groupby(pd.TimeGrouper('6M')).apply(lambda x: x.groupby('Branch').sum()) Out[38]: Quantity Branch 2013-01-31 A 4 2014-01-31 A 22 B 3 

И еще более сложный вопрос

 In [55]: def testf(df): ....: if (df['Buyer'] == 'Mark').sum() > 0: ....: return Series(dict(quantity = df['Quantity'].sum(), buyer = 'mark')) ....: return Series(dict(quantity = df['Quantity'].sum()*100, buyer = 'other')) ....: In [56]: df.set_index('Date').groupby(pd.TimeGrouper('6M')).apply(lambda x: x.groupby('Branch').apply(testf)) Out[56]: buyer quantity Branch 2013-01-31 A mark 4 2014-01-31 A other 2200 B other 300 

Теперь вы можете использовать TimeGrouper с другим столбцом (в версии IIRC pandas версии 0.14 ):

 In [11]: df1 = df.set_index('Date') In [12]: g = df1.groupby([pd.TimeGrouper('20D'), 'Branch']) In [13]: g.sum() Out[13]: Quantity Date Branch 2013-01-01 13:00:00 A 4 2013-09-18 13:00:00 A 13 2013-11-17 13:00:00 A 9 B 3 
  • Pandas - преобразование мультииндекса данных в объект datetime
  • Как сгруппировать pandas DataFrame с помощью другого?
  • Повторная выборка данных по часам и дате
  • Ошибка ремаркетинга Pandas: действует только с DatetimeIndex или PeriodIndex
  • Объединение двух временных рядов в пандах
  • Как получить количество строк в кадре данных Pandas?
  • Многоиндексная сортировка в пандах
  • python pandas не читает первый столбец из файла csv
  • Python - лучший язык программирования в мире.