Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. import pandas as pd
  2. import numpy as np
  3. rand = np.random.RandomState(1)
  4. df = pd.DataFrame({'A': ['foo', 'bar', 'baz'] * 10,
  5. 'B': [rand.choice(['cat', 'dog', 'fish', 'pig', 'cow']) for i in range(30)],
  6. 'C': 1})
  7.  
  8. >> df.head(5)
  9. A B C
  10. 0 foo pig 1
  11. 1 bar cow 1
  12. 2 baz cat 1
  13. 3 foo dog 1
  14. 4 bar pig 1
  15.  
  16. >> d = df.groupby(['A','B']).sum();
  17. >> d = d.groupby(level=0, group_keys=False).apply(lambda x: x.sort_values('C', ascending=False)); d
  18.  
  19. C
  20. A B
  21. bar dog 4
  22. cow 2
  23. fish 2
  24. cat 1
  25. pig 1
  26. baz cow 4
  27. cat 3
  28. fish 2
  29. dog 1
  30. foo dog 4
  31. cow 3
  32. pig 2
  33. cat 1
  34.  
  35. def summarise(l, n=10, name='Other'):
  36. h = l.head(n)
  37.  
  38. idx = l.index[0]
  39. if isinstance(idx, (list, tuple)):
  40. prefix = list(idx[:-1])
  41. else:
  42. prefix = []
  43. return h.append(pd.DataFrame([l.tail(-n).sum()], columns=l.columns, index=[tuple(prefix+[name])]))
  44.  
  45. >> summarise(d, n=2)
  46. C
  47. A B
  48. bar dog 4
  49. cow 2
  50. Other 24
  51.  
  52. A B C
  53. bar dog 4
  54. bar cow 2
  55. bar Other 4
  56. baz cow 4
  57. baz cat 3
  58. baz Other 3
  59. foo dog 4
  60. foo cow 3
  61. foo Other 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement