gpt4 book ai didi

dataframe - 从 DataFrame 或 JuliaDB 表中获取列名

转载 作者:行者123 更新时间:2023-12-03 16:02:45 26 4
gpt4 key购买 nike

如何从 DataFrame 中获取列名对象或 JuliaDB IndexedTable目的?这可能吗?

可重现的代码:

using JuliaDB
import DataFrames
DF = DataFrames

# CREATES AN EXAMPLE TABLE WITH JULIADB

colnames = [:samples, :A, :B, :C, :D]
primary_key = [:samples]
coltypes = [Int[], Float64[],Float64[],Float64[],Float64[]]
sample_sizes = [100,200,300]
example_values = (1, 0.4, 0.3, 0.2, 0.1)

mytable = table(coltypes..., names=colnames, pkey=primary_key) # initialize empty table

# add some data to table
for i in sample_sizes
example_values = (i, 0.4, 0.3, 0.2, 0.1)
table_params = [(col=>val) for (col,val) in zip(colnames, example_values)]

push!(rows(mytable), (; table_params...)) # add row
mytable = table(mytable, pkey = primary_key, copy = false) # sort rows by primary key
end
mytable = table(unique(mytable), pkey=primary_key) # remove duplicate rows which don't exist

# MAKES A DATAFRAME FROM JULIADB TABLE

df = DF.DataFrame(mytable)

例如,给定上面的代码,如果有一列 :E,你将如何检查条件?在任一 mytabledf ,(为了添加这样的列,如果它还不存在)?

最终,我正在寻找与以下 Python 代码等效的 Julia:

if 'E' in df.columns:
# ...
else:
# ...

最佳答案

df是您可以编写的数据框:

if :E in names(df)
...

(在 JuliaDB.jl 中是 JuliaDB.colnames )

但更快(在运行时和可用于数据帧选项方面是:
if hasproperty(df, :E)
...

有点慢,但在其他情况下很有用(它也适用于 JuliaDB.jl,但首先你必须加载 Tables.jl 并写入 Tables.columnindex):
if columnindex(df, :E) != 0
...

最后一个例子 columnindex它的工作方式可能是最复杂的,它的文档中描述了它:
help?> columnindex
search: columnindex

Tables.columnindex(table, name::Symbol)

Return the column index (1-based) of a column by name in a table with a
known schema; returns 0 if name doesn't exist in table

────────────────────────────────────────────────────────────────────────────

given names and a Symbol name, compute the index (1-based) of the name in
names

关于dataframe - 从 DataFrame 或 JuliaDB 表中获取列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60884464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com