Convert Julia Dataframe to Python Pandas data frame

Will Gorman :

I am trying to convert a PyCall.jlwrap ('Julia') object to a Pandas dataframe. I'm using PyJulia to run an optimization algorithm in Julia, which spits out a dataframe object as a result. I would like to convert that object to a Pandas dataframe.

This is a similar question as posed 5 years ago here. However, there is not any code to suggest how to accomplish the transfer.

Any help would be useful!

Here is the code I currently have set-up. It's not that useful to know what is happening in the background of my 'optimization_program' but just to know that what is returned by the 'run_hybrid' and 'run_storage' commands returns a data frame:

### load in necessary modules for pyjulia    
from julia import Main as jl 

##load my user defined module
jl.include("optimization_program_v3.jl")

##run function from module
results = jl.run_hybrid(generic_inputs)

##test type of item returned
jl.typeof(results)
returns: <PyCall.jlwrap DataFrame>

##try to convert to pandas
test = pd.DataFrame(results)

Value Error Traceback (most recent call last)

in ()

----> 1 test = pd.DataFrame(results)

in init(self, data, index, columns, dtype, copy)

420 dtype=values.dtype, copy=False) 421 else: 422 raise ValueError('DataFrame constructor not properly called!')

423

424 NDFrame.init(self, mgr, fastpath=True)

ValueError: DataFrame constructor not properly called!

drec4s :

I get an error (reading a Julia DataFrame in Python), if I use the DataFrames.jl package. However, it seems to work nicely with the Pandas.jl package:

>>> from julia import Main as jl
>>> import pandas as pd
>>> jl.eval('using Pandas')
>>> res = jl.eval('DataFrame(Dict(:age=>[27, 29, 27], :name=>["James", "Jill", "Jake"]))')
>>> jl.typeof(res)
#<PyCall.jlwrap PyObject>
>>> df = pd.DataFrame(res)
>>> df
    age   name
0   27  James
1   29   Jill
2   27   Jake

This was tested on Win10, with Python 3.8.2, and Julia 1.3.1

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=26253&siteId=1