#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