Llamar a funciones de python desde archivos * .py desde java y pasar y regresar

Quiero llamar a las funciones de python desde el archivo *.py desde el código java y enviar argumentos y recibir valores de retorno de forma transparente sin necesidad de modificar el archivo *.py dado. Me di cuenta de que Jython PythonInterpreter es la mejor opción para esto en comparación con py4j, java2python, ScriptEngine, JPype.

Puedo pasar / recuperar la lista con éxito con Jython PythonInterpreter. Pero no mapa todavía. ( Creé una pregunta de stackoverflow que explica la excepción que obtengo al pasar el argumento del mapa y recuperar el valor de retorno del mapa).

Acabo de intentar pasar y recuperar series de panda (debo probar el dataframe de panda a continuación) de la siguiente manera:

py1.py

 import numpy as np1 import pandas as pd def getSeries(): s = pd.Series(np1.random.randn(5), index=['a', 'b', 'c', 'd', 'e']) return s 

JythonTest.groovy

 import org.python.util.PythonInterpreter; import org.python.core.*; import org.python.util.*; class JythonTest { static main(def args) { PythonInterpreter() pi = new PythonInterpreter() pi.exec("from py1 import *") PyFunction pf1 = (PyFunction)pi.get("getSeries") PyObject obj = pf1.__call__() println obj } } 

Dio el siguiente error:

 Exception in thread "main" Traceback (most recent call last): File "", line 1, in  File "__pyclasspath__/py1.py", line 1, in  ImportError: No module named numpy 

Después de buscar en Google, me di cuenta de que Jython no es compatible con pandas y numpy . También hay otras páginas web en línea que dicen lo mismo. Sin embargo, todos son un poco viejos.

P. Quiero saber si es realmente imposible enviar / recibir Panda DataFrame a Jython o no.

P. Si no es posible, ¿hay mejores opciones disponibles?

También me gustaría saber por qué mi mapa de envío / recepción no funcionó.