dataframe - 如何根据行的字符串值高效地抓取数据

标签 dataframe julia

我的数据集如图所示: enter image description here

我为一个特定的县建立了一个简单的线性回归模型,现在我想测试它在不同县的准确性。目前,我知道我可以使用以下命令创建一个县的数据子集:tompkins =tax[strip.(tax.County, [' ']) .== "Tompkins",:].然而,以这种方式手动为每个县创建数据子集将非常麻烦。有没有一种更有效的方法可以收集所有县数据子集,以便我可以在它们上运行我的线性模型?

最佳答案

您正在寻找的是groupby

假设您有以下DataFrame:

julia> df = DataFrame(Country=rand([:A,:B,:C],7), year=rand(2000:2020,7), tax=rand(7))
7×3 DataFrame
│ Row │ Country │ year  │ tax      │
│     │ Symbol  │ Int64 │ Float64  │
├─────┼─────────┼───────┼──────────┤
│ 1   │ A       │ 2014  │ 0.913118 │
│ 2   │ C       │ 2003  │ 0.894182 │
│ 3   │ A       │ 2018  │ 0.917585 │
│ 4   │ C       │ 2011  │ 0.869531 │
│ 5   │ A       │ 2011  │ 0.45841  │
│ 6   │ B       │ 2001  │ 0.808954 │
│ 7   │ B       │ 2008  │ 0.969813 │

您可以收集每个国家/地区的信息:

dfg = groupby(df, :Country);

现在:

julia> dfg[1]
3×3 SubDataFrame
│ Row │ Country │ year  │ tax      │
│     │ Symbol  │ Int64 │ Float64  │
├─────┼─────────┼───────┼──────────┤
│ 1   │ A       │ 2014  │ 0.913118 │
│ 2   │ A       │ 2018  │ 0.917585 │
│ 3   │ A       │ 2011  │ 0.45841  │

julia> dfg[2]
2×3 SubDataFrame
│ Row │ Country │ year  │ tax      │
│     │ Symbol  │ Int64 │ Float64  │
├─────┼─────────┼───────┼──────────┤
│ 1   │ C       │ 2003  │ 0.894182 │
│ 2   │ C       │ 2011  │ 0.869531 │

julia> dfg[3]
2×3 SubDataFrame
│ Row │ Country │ year  │ tax      │
│     │ Symbol  │ Int64 │ Float64  │
├─────┼─────────┼───────┼──────────┤
│ 1   │ B       │ 2001  │ 0.808954 │
│ 2   │ B       │ 2008  │ 0.969813 │

请注意,为了更快地搜索,最好使用符号而不是字符串。您始终可以使用矢量化 Symbol.() 构造函数来转换 String 的任何列。

关于dataframe - 如何根据行的字符串值高效地抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64235567/

相关文章:

python - 如何在条件下计算 csv 文件中某个单词的出现次数?

python - Pandas : Unable to update empty dataframe by single string

python dataframe根据其他列的条件替换列中的部分字符串

julia - 具有来自另一个向量的元素的长度为 N 的向量(有重复)

arrays - Julia:扁平化数组/元组数组

julia - 用 Julia 包填充可迭代对象

r - 将每个数据框排列在数据框列表中

python - Pandas groupby、累积总和和按类别绘图

centos - 如何在 julia 1.6.2 中安装 Sprite 包?

arrays - groupby() 在 julia 中使用两个数组?