Guest User

Untitled

a guest
Feb 14th, 2013
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. import pandas
  2. import numpy
  3. import scipy
  4.  
  5. import rpy2
  6. from rpy2.robjects import r
  7. from collections import OrderedDict
  8. py2ri_orig = rpy2.robjects.conversion.py2ri
  9. def conversion_pydataframe(obj):
  10. print "CONVERTING TO PYDATAFRAME"
  11. if isinstance(obj, pandas.core.frame.DataFrame):
  12. od = OrderedDict()
  13. for name, values in obj.iteritems():
  14. if values.dtype.kind == 'O':
  15. od[name] = rpy2.robjects.vectors.StrVector(values)
  16. else:
  17. od[name] = rpy2.robjects.conversion.py2ri(values)
  18. return rpy2.robjects.vectors.DataFrame(od)
  19. else:
  20. return py2ri_orig(obj)
  21.  
  22. rpy2.robjects.conversion.py2ri = conversion_pydataframe
  23.  
  24.  
  25. df = pandas.DataFrame({"a": 1, "b": 2},
  26. {"c": 3, "d": 4})
  27. print type(df)
  28. r.plot(df)
  29.  
  30.  
  31. Yields the error:
  32.  
  33.  
  34. <class 'pandas.core.frame.DataFrame'>
  35. CONVERTING TO PYDATAFRAME
  36. CONVERTING TO PYDATAFRAME
  37. Traceback (most recent call last):
  38.  
  39. rpy2/robjects/__init__.py", line 144, in default_py2ri
  40. raise(ValueError("Nothing can be done for the type %s at the moment." %(type(o))))
  41. ValueError: Nothing can be done for the type <class 'pandas.core.series.Series'> at the moment.
Add Comment
Please, Sign In to add comment