我有一个CSV文件的格式(忽略前两行的空格,这只是为了良好的字母对齐):

 , ,E,E,F,F
 , ,G,H,G,H
A,C,1,2,3,4
A,D,5,6,7,8
B,C,9,0,1,2
B,D,3,4,5,6

在Python中,通过创建一个带有pandas库的pandrame:

df = pd.read_csv(path, header=[0,1], index_col=[0,1])

然后,我能够通过提及标题行和索引列的值来获得一个值:

>>> df.loc[("A","D"), ("E","G")]
5

但是在Julia中,使用CSV和DataFrame包,我只能将行作为头文件,而不能将列作为列.目前,我做的是:

df = CSV.read(path, DataFrame, header=[1,2], normalizenames=true) 

在函数(https://csv.juliadata.org/stable/reading.html)的文档中,我找不到启用此特性的任何选项.

有没有一种方法,也许使用其他函数或包,在Julia中做我可以在Python中做的事情?

推荐答案

你可能正在寻找类似的东西:

using CSV, DataFrames, NamedArrays

df = CSV.read(path, DataFrame; header=false)
M = NamedArray(parse.(Int,Array(df[3:end,3:end])),
  (
    map(String∘splat(*),eachrow(df[3:end,1:2])),
    map(String∘splat(*),eachcol(df[1:2,3:end]))
  )
)

其结果是:

4×4 Named Matrix{Int64}
A ╲ B │ EG  EH  FG  FH
──────┼───────────────
AC    │  1   2   3   4
AD    │  5   6   7   8
BC    │  9   0   1   2
BD    │  3   4   5   6

索引:

julia> M["AD","EG"]
5

(可以使用String∘,而不是String.(map(...)).

Python相关问答推荐

使用polars .滤镜进行切片速度比pandas .loc慢

当多个值具有相同模式时返回空

如何使用Python将工作表从一个Excel工作簿复制粘贴到另一个工作簿?

在Python中处理大量CSV文件中的数据

numba jitClass,记录类型为字符串

在Python中管理打开对话框

基于索引值的Pandas DataFrame条件填充

如何在WSL2中更新Python到最新版本(3.12.2)?

关于Python异步编程的问题和使用await/await def关键字

迭代嵌套字典的值

Pandas:计算中间时间条目的总时间增量

如何找出Pandas 图中的连续空值(NaN)?

Odoo16:模板中使用的docs变量在哪里定义?

为用户输入的整数查找根/幂整数对的Python练习

如何在Gekko中处理跨矢量优化

ModuleNotFoundError:Python中没有名为google的模块''

在pandas中,如何在由两列加上一个值列组成的枢轴期间或之后可靠地设置多级列的索引顺序,

如果服务器设置为不侦听创建,则QWebSocket客户端不连接到QWebSocketServer;如果服务器稍后开始侦听,则不连接

时长超过24小时如何从Excel导入时长数据

某些值的数值幂和**之间的差异