Dataframe 如何基于行的字符串值高效地抓取数据

Dataframe 如何基于行的字符串值高效地抓取数据,dataframe,julia,Dataframe,Julia,我的数据集如图所示: 我为一个特定的县建立了一个简单的线性回归模型,现在我想在不同的县测试它的准确性。目前,我知道我可以使用以下命令为一个县创建数据子集:tompkins=tax[strip.(tax.county,[''])。==“tompkins”,:]。然而,以这种方式手动为每个县创建数据子集将非常麻烦。是否有一种更有效的方法可以收集所有县数据子集,以便在其上运行线性模型?您正在寻找的是groupby 假设您有以下数据帧: julia> df = DataFrame(Country

我的数据集如图所示:


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

您正在寻找的是
groupby

假设您有以下
数据帧

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
s而不是string。始终可以使用矢量化的
符号。(
构造函数来转换
字符串的任何列