I have a Data-frame df which is as follows:
| date      | Revenue | |-----------|---------| | 6/2/2017  | 100     | | 5/23/2017 | 200     | | 5/20/2017 | 300     | | 6/22/2017 | 400     | | 6/21/2017 | 500     |   I need to group the above data by month to get output as:
| date | SUM(Revenue) | |------|--------------| | May  | 500          | | June | 1000         |   I tried this code but it did not work:
df.groupby(month('date')).agg({'Revenue': 'sum'})   I want to only use Pandas or Numpy and no additional libraries
df = df. sort_values(by='date',ascending=True,inplace=True) works to the initial df but after I did a groupby , it didn't maintain the order coming out from the sorted df . To conclude, I needed from the initial data frame these two columns. Sorted the datetime column and through a groupby using the month (dt.
try this:
In [6]: df['date'] = pd.to_datetime(df['date'])  In [7]: df Out[7]:          date  Revenue 0 2017-06-02      100 1 2017-05-23      200 2 2017-05-20      300 3 2017-06-22      400 4 2017-06-21      500    In [59]: df.groupby(df['date'].dt.strftime('%B'))['Revenue'].sum().sort_values() Out[59]:  date May      500 June    1000 
                        Try a groupby using a pandas Grouper:
df = pd.DataFrame({'date':['6/2/2017','5/23/2017','5/20/2017','6/22/2017','6/21/2017'],'Revenue':[100,200,300,400,500]}) df.date = pd.to_datetime(df.date) dg = df.groupby(pd.Grouper(key='date', freq='1M')).sum() # groupby each 1 month dg.index = dg.index.strftime('%B')       Revenue  May    500 June    1000 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With