Как вывести фрейм данных julia в формате orgtbl? (Попытка обернуть `таблицу` Пакет Python в командах Julia)

#python #dataframe #julia #org-mode #pycall

Вопрос:

В следующей ссылке мы видим, что мы можем использовать table пакет на Python для возврата в формате orgtbl.

 # begin_src python :results value raw :output :return tabulate(df, headers=df.columns, tablefmt='orgtbl')
from tabulate import tabulate
import pandas as pd
df = pd.DataFrame({
    "a": [1,2,3],
    "b": [4,5,6]
})
# end_src

# RESULTS:
|   | a | b |
|--- --- ---|
| 0 | 1 | 4 |
| 1 | 2 | 5 |
| 2 | 3 | 6 |
 

https://emacs.stackexchange.com/questions/28715/get-pandas-data-frame-as-a-table-in-org-babel

Но как мы можем сделать это в Джулии? Я знаю, что можно использовать PyCall для импорта и использования библиотек Python. Но, похоже, я не в состоянии справиться с этим.

То, что у меня есть до сих пор:

 # begin_src julia :session main :result output
tabulate.tabulate
# end_src

# RESULTS:
: PyObject <function tabulate at 0x7f182faaab80>
 

Попытка вывода вызова tabulate.tabulate (не работает),

 # begin_src julia :session main :return tabulate.tabulate(py"df_raw, headers=df_raw.columns, tablefmt='orgtbl'")
  @chain df_raw begin
      groupby([:target, :sex])
      combine(nrow)
  end
# end_src
 

Также не работает,
tabulate.tabulate(py"df_raw, headers=df_raw.columns, tablefmt='orgtbl'") или tabulate.tabulate(df_raw)

Со следующей ошибкой:

 julia> tabulate.tabulate(df_raw)
ERROR: (in a Julia function called from Python)
JULIA: AbstractDataFrame is not iterable. Use eachrow(df) to get a row iterator or eachcol(df) to get a column iterator
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:33
  [2] iterate(#unused#::DataFrame)
    @ DataFrames ~/.julia/packages/DataFrames/vuMM8/src/abstractdataframe/iteration.jl:23
 

ПРИМЕЧАНИЕ: df_raw-это случайный кадр данных,

 help?> df_raw
search: df_raw dof_residual default_cgrad

  No documentation found.

  df_raw is of type DataFrame.

  Summary
  ≡≡≡≡≡≡≡≡≡

  struct DataFrame <: AbstractDataFrame

  Fields
  ≡≡≡≡≡≡≡≡

  columns  :: Vector{AbstractVector{T} where T}
  colindex :: DataFrames.Index

  Supertype Hierarchy
  ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

  DataFrame <: AbstractDataFrame <: Any
 

Комментарии:

1. Может быть, взглянем на github.com/ronisbr/PrettyTables.jl

2. Он не поддерживает orgtbl формат. Но, я думаю mysql , делает это.

Ответ №1:

Я тоже искал это. Если все, что вам нужно, — это фрейм данных в Julia, и вы не возражаете против стороннего решения. С этим пакетом https://github.com/frederic-santos/ob-ess-julia, вы можете просто

 # begin_src ess-julia :session *julia*
using DataFrames
df = DataFrame(A=1:3, B=4:6)
df
# end_src