Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- df = pd.DataFrame({'date': pd.date_range('2015-12-29', '2016-1-3'),
- 'val1': [1] * 6,
- 'val2': range(6),
- 'cat1': ['a', 'b', 'c'] * 2,
- 'cat2': ['A', 'B', 'C'] * 2})
- df['cat1'] = df.cat1.astype('category')
- df['month'] = [d.to_period('M') for d in df.date]
- >>> df
- cat1 cat2 date val1 val2 month
- 0 a A 2015-12-29 1 0 2015-12
- 1 b B 2015-12-30 1 1 2015-12
- 2 c C 2015-12-31 1 2 2015-12
- 3 a A 2016-01-01 1 3 2016-01
- 4 b B 2016-01-02 1 4 2016-01
- 5 c C 2016-01-03 1 5 2016-01
- >>> df.groupby(['month', 'date', 'cat2']).sum().unstack()
- val1 val2
- cat2 A B C A B C
- month date
- 2015-12 2015-12-29 1 NaN NaN 0 NaN NaN
- 2015-12-30 NaN 1 NaN NaN 1 NaN
- 2015-12-31 NaN NaN 1 NaN NaN 2
- 2016-01 2016-01-01 1 NaN NaN 3 NaN NaN
- 2016-01-02 NaN 1 NaN NaN 4 NaN
- 2016-01-03 NaN NaN 1 NaN NaN 5
- val1 val2
- cat1 a b c a b c
- month date
- 2015-12 2015-12-29 1 NaN NaN 0 NaN NaN
- 2015-12-30 NaN 1 NaN NaN 1 NaN
- 2015-12-31 NaN NaN 1 NaN NaN 2
- 2016-01-01 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
- 2016-01-02 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
- 2016-01-03 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
- 2016-01 2015-12-29 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
- 2015-12-30 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
- 2015-12-31 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
- 2016-01-01 1 NaN NaN 3 NaN NaN
- 2016-01-02 NaN 1 NaN NaN 4 NaN
- 2016-01-03 NaN NaN 1 NaN NaN 5
- >>> df.groupby(['month', 'cat1']).sum().unstack()
- val1 val2
- cat1 a b c a b c
- month
- 2015-12 1 1 1 0 1 2
- 2016-01 1 1 1 3 4 5
- >>> df.groupby(['date', 'cat1']).sum().unstack()
- val1 val2
- cat1 a b c a b c
- date
- 2015-12-29 1 NaN NaN 0 NaN NaN
- 2015-12-30 NaN 1 NaN NaN 1 NaN
- 2015-12-31 NaN NaN 1 NaN NaN 2
- 2016-01-01 1 NaN NaN 3 NaN NaN
- 2016-01-02 NaN 1 NaN NaN 4 NaN
- 2016-01-03 NaN NaN 1 NaN NaN 5
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement