Advertisement
Guest User

Untitled

a guest
Feb 5th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. df = pd.DataFrame({'date': pd.date_range('2015-12-29', '2016-1-3'),
  2. 'val1': [1] * 6,
  3. 'val2': range(6),
  4. 'cat1': ['a', 'b', 'c'] * 2,
  5. 'cat2': ['A', 'B', 'C'] * 2})
  6. df['cat1'] = df.cat1.astype('category')
  7. df['month'] = [d.to_period('M') for d in df.date]
  8. >>> df
  9. cat1 cat2 date val1 val2 month
  10. 0 a A 2015-12-29 1 0 2015-12
  11. 1 b B 2015-12-30 1 1 2015-12
  12. 2 c C 2015-12-31 1 2 2015-12
  13. 3 a A 2016-01-01 1 3 2016-01
  14. 4 b B 2016-01-02 1 4 2016-01
  15. 5 c C 2016-01-03 1 5 2016-01
  16.  
  17. >>> df.groupby(['month', 'date', 'cat2']).sum().unstack()
  18. val1 val2
  19. cat2 A B C A B C
  20. month date
  21. 2015-12 2015-12-29 1 NaN NaN 0 NaN NaN
  22. 2015-12-30 NaN 1 NaN NaN 1 NaN
  23. 2015-12-31 NaN NaN 1 NaN NaN 2
  24. 2016-01 2016-01-01 1 NaN NaN 3 NaN NaN
  25. 2016-01-02 NaN 1 NaN NaN 4 NaN
  26. 2016-01-03 NaN NaN 1 NaN NaN 5
  27.  
  28. val1 val2
  29. cat1 a b c a b c
  30. month date
  31. 2015-12 2015-12-29 1 NaN NaN 0 NaN NaN
  32. 2015-12-30 NaN 1 NaN NaN 1 NaN
  33. 2015-12-31 NaN NaN 1 NaN NaN 2
  34. 2016-01-01 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
  35. 2016-01-02 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
  36. 2016-01-03 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
  37. 2016-01 2015-12-29 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
  38. 2015-12-30 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
  39. 2015-12-31 NaN NaN NaN NaN NaN NaN # <<< Extraneous row.
  40. 2016-01-01 1 NaN NaN 3 NaN NaN
  41. 2016-01-02 NaN 1 NaN NaN 4 NaN
  42. 2016-01-03 NaN NaN 1 NaN NaN 5
  43.  
  44. >>> df.groupby(['month', 'cat1']).sum().unstack()
  45. val1 val2
  46. cat1 a b c a b c
  47. month
  48. 2015-12 1 1 1 0 1 2
  49. 2016-01 1 1 1 3 4 5
  50.  
  51. >>> df.groupby(['date', 'cat1']).sum().unstack()
  52. val1 val2
  53. cat1 a b c a b c
  54. date
  55. 2015-12-29 1 NaN NaN 0 NaN NaN
  56. 2015-12-30 NaN 1 NaN NaN 1 NaN
  57. 2015-12-31 NaN NaN 1 NaN NaN 2
  58. 2016-01-01 1 NaN NaN 3 NaN NaN
  59. 2016-01-02 NaN 1 NaN NaN 4 NaN
  60. 2016-01-03 NaN NaN 1 NaN NaN 5
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement