from six import string_types
import numpy as np
import pandas as pd
try :
from IPython.display import Image, display, HTML
printer = lambda out: display( HTML( out.to_html ( ) ) )
except ImportError :
printer = print
df = pd.DataFrame (
np.random .randn ( 8 , 4 ) ,
index= [ np.array ( [ 'bar' , 'bar' , 'baz' , 'baz' , 'foo' , 'foo' , 'qux' , 'qux' ] ) ,
np.array ( [ 'one' , 'two' , 'one' , 'two' , 'one' , 'two' , 'one' , 'two' ] ) ] )
namednumber2numbername = {
'one' : ( 'zero' , 'one' , 'two' , 'three' , 'four' , 'five' , 'six' , 'seven' , 'eight' , 'nine' ) ,
'two' : ( 'i' , 'ii' , 'iii' , 'iv' , 'v' , 'vi' , 'vii' , 'viii' , 'ix' , 'x' )
}
def namednumber2numbername_applicator( series) :
#if namednumber2numbername_applicator.t > 0:
# namednumber2numbername_applicator.t -= 1
# display(HTML(series.to_frame().tohtml()))
def to_s( value) :
if pd.isnull ( value) or isinstance ( value, string_types) :
return value
value = np.ushort ( value)
if value > 10 :
return value
#print('series.name:\t{name!r:<10}\nvalue:\t\t{value!r}\n'.format(name=series.name,
# value=value))
# TODO: Figure out index of `series.name`
return namednumber2numbername[ 'one' ] [ value]
return series.apply ( to_s)
namednumber2numbername_applicator.t = 1
printer( df.transform ( namednumber2numbername_applicator) )
ZnJvbSBzaXggaW1wb3J0IHN0cmluZ190eXBlcwoKaW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBwYW5kYXMgYXMgcGQKCnRyeToKCWZyb20gSVB5dGhvbi5kaXNwbGF5IGltcG9ydCBJbWFnZSwgZGlzcGxheSwgSFRNTAoKCXByaW50ZXIgPSBsYW1iZGEgb3V0OiBkaXNwbGF5KEhUTUwob3V0LnRvX2h0bWwoKSkpCmV4Y2VwdCBJbXBvcnRFcnJvcjoKCXByaW50ZXIgPSBwcmludAoKCmRmID0gcGQuRGF0YUZyYW1lKAogICAgbnAucmFuZG9tLnJhbmRuKDgsIDQpLAogICAgaW5kZXg9W25wLmFycmF5KFsnYmFyJywgJ2JhcicsICdiYXonLCAnYmF6JywgJ2ZvbycsICdmb28nLCAncXV4JywgJ3F1eCddKSwKICAgICAgICAgICBucC5hcnJheShbJ29uZScsICd0d28nLCAnb25lJywgJ3R3bycsICdvbmUnLCAndHdvJywgJ29uZScsICd0d28nXSldKQoKbmFtZWRudW1iZXIybnVtYmVybmFtZSA9IHsKICAgICdvbmUnOiAoJ3plcm8nLCAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJywgJ2ZpdmUnLCAnc2l4JywgJ3NldmVuJywgJ2VpZ2h0JywgJ25pbmUnKSwKICAgICd0d28nOiAoJ2knLCAgICAnaWknLCAgJ2lpaScsICdpdicsICAgICd2JywgICAgJ3ZpJywgICAndmlpJywgJ3ZpaWknLCAgJ2l4JywgICAgJ3gnKQp9CgpkZWYgbmFtZWRudW1iZXIybnVtYmVybmFtZV9hcHBsaWNhdG9yKHNlcmllcyk6CiAgICAjaWYgbmFtZWRudW1iZXIybnVtYmVybmFtZV9hcHBsaWNhdG9yLnQgPiAwOgogICAgIyAgICBuYW1lZG51bWJlcjJudW1iZXJuYW1lX2FwcGxpY2F0b3IudCAtPSAxCiAgICAjICAgIGRpc3BsYXkoSFRNTChzZXJpZXMudG9fZnJhbWUoKS50b2h0bWwoKSkpCiAgICAKICAgIGRlZiB0b19zKHZhbHVlKToKICAgICAgICBpZiBwZC5pc251bGwodmFsdWUpIG9yIGlzaW5zdGFuY2UodmFsdWUsIHN0cmluZ190eXBlcyk6CiAgICAgICAgICAgIHJldHVybiB2YWx1ZQogICAgICAgIHZhbHVlID0gbnAudXNob3J0KHZhbHVlKQogICAgICAgIAogICAgICAgIGlmIHZhbHVlID4gMTA6CiAgICAgICAgICAgIHJldHVybiB2YWx1ZQogICAgICAgIAogICAgICAgICNwcmludCgnc2VyaWVzLm5hbWU6XHR7bmFtZSFyOjwxMH1cbnZhbHVlOlx0XHR7dmFsdWUhcn1cbicuZm9ybWF0KG5hbWU9c2VyaWVzLm5hbWUsCiAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9dmFsdWUpKQogICAgICAgIAogICAgICAgICMgVE9ETzogRmlndXJlIG91dCBpbmRleCBvZiBgc2VyaWVzLm5hbWVgCiAgICAgICAgCiAgICAgICAgcmV0dXJuIG5hbWVkbnVtYmVyMm51bWJlcm5hbWVbJ29uZSddW3ZhbHVlXQoKICAgIHJldHVybiBzZXJpZXMuYXBwbHkodG9fcykKbmFtZWRudW1iZXIybnVtYmVybmFtZV9hcHBsaWNhdG9yLnQgPSAxCgpwcmludGVyKGRmLnRyYW5zZm9ybShuYW1lZG51bWJlcjJudW1iZXJuYW1lX2FwcGxpY2F0b3IpKQo=