fork(1) download
  1. from six import string_types
  2.  
  3. import numpy as np
  4. import pandas as pd
  5.  
  6. try:
  7. from IPython.display import Image, display, HTML
  8.  
  9. printer = lambda out: display(HTML(out.to_html()))
  10. except ImportError:
  11. printer = print
  12.  
  13.  
  14. df = pd.DataFrame(
  15. np.random.randn(8, 4),
  16. index=[np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
  17. np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])])
  18.  
  19. namednumber2numbername = {
  20. 'one': ('zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'),
  21. 'two': ('i', 'ii', 'iii', 'iv', 'v', 'vi', 'vii', 'viii', 'ix', 'x')
  22. }
  23.  
  24. def namednumber2numbername_applicator(series):
  25. #if namednumber2numbername_applicator.t > 0:
  26. # namednumber2numbername_applicator.t -= 1
  27. # display(HTML(series.to_frame().tohtml()))
  28.  
  29. def to_s(value):
  30. if pd.isnull(value) or isinstance(value, string_types):
  31. return value
  32. value = np.ushort(value)
  33.  
  34. if value > 10:
  35. return value
  36.  
  37. #print('series.name:\t{name!r:<10}\nvalue:\t\t{value!r}\n'.format(name=series.name,
  38. # value=value))
  39.  
  40. # TODO: Figure out index of `series.name`
  41.  
  42. return namednumber2numbername['one'][value]
  43.  
  44. return series.apply(to_s)
  45. namednumber2numbername_applicator.t = 1
  46.  
  47. printer(df.transform(namednumber2numbername_applicator))
  48.  
Success #stdin #stdout 0.5s 61512KB
stdin
Standard input is empty
stdout
             0      1      2     3
bar one   zero   zero  65534  zero
    two  65535   zero   zero  zero
baz one   zero    one  65535  zero
    two  65535   zero   zero   one
foo one   zero  65535   zero  zero
    two   zero   zero  65534  zero
qux one   zero  65535    one  zero
    two    one   zero  65535  zero