gpt4 book ai didi

dataframe - 是否可以将选定的列设置为 julia 数据框中的索引?

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

dataframes在 Pandas 中,索引在一个或多个数字和/或字符串列中。特别是在 groupby 之后操作,输出是一个数据帧,其中新索引由组给出。
类似地,julia 数据框总是有一个名为 Row 的列。我认为这相当于 Pandas 中的索引。但是,在 groupby 操作之后,julia 数据框不使用组作为新索引。这是一个工作示例:

using RDatasets;
using DataFrames;
using StatsBase;

df = dataset("Ecdat","Cigarette");

gdf = groupby(df, "Year");

combine(gdf, "Income" => mean)
输出:
11×2 DataFrame
│ Row │ Year │ Income_mean │
│ │ Int32 │ Float64 │
├─────┼───────┼─────────────┤
│ 1 │ 1985 │ 7.20845e7 │
│ 2 │ 1986 │ 7.61923e7 │
│ 3 │ 1987 │ 8.13253e7 │
│ 4 │ 1988 │ 8.77016e7 │
│ 5 │ 1989 │ 9.44374e7 │
│ 6 │ 1990 │ 1.00666e8 │
│ 7 │ 1991 │ 1.04361e8 │
│ 8 │ 1992 │ 1.10775e8 │
│ 9 │ 1993 │ 1.1534e8 │
│ 10 │ 1994 │ 1.21145e8 │
│ 11 │ 1995 │ 1.27673e8 │
即使新索引的创建不是自动完成的,我想知道是否有办法手动将所选列设置为索引。我发现了方法 setindex!阅读 documentation .但是,我无法使用这种方法。我试过:
#create new df
income = combine(gdf, "Income" => mean)
#set index
setindex!(income, "Year")
这给出了错误:
ERROR: LoadError: MethodError: no method matching setindex!(::DataFrame, ::String)
我认为我误用了命令。我在这里做错了什么?是否可以使用一个或多个选定的列在 julia 数据框中手动设置索引?

最佳答案

DataFrames.jl 当前不允许为数据框指定索引。 Row列只是用于打印——它实际上不是数据框的一部分。
但是,DataFrames.jl 提供了所有常用的表操作,例如连接、转换、过滤器、聚合和数据透视。对这些操作的支持不需要表索引。 table index是数据库(和 Pandas)用来加速某些表操作的结构,代价是额外的内存使用和创建索引的成本。setindex!您发现的函数实际上是来自 Base Julia 的一个方法,用于自定义自定义类型的索引行为。例如,x[1] = 42相当于 setindex!(x, 42, 1) . 重载此方法允许您为您创建的类型自定义索引行为。Base.setindex! 的文档字符串可以找到 herehere .
如果你真的需要一个带索引的表,你可以试试 IndexedTables.jl .

关于dataframe - 是否可以将选定的列设置为 julia 数据框中的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64689023/

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