Julia 按前一列读取数据框索引中的最后一列

标签 julia

我有一个包含 3 列的数据框 年龄、性别和比率

see dataframe

我想通过引用前两列来读取“Rate” 比如说,(3,M) 将返回 0.0001885

在 Julia 中有什么聪明的方法可以做到这一点吗?

(我希望解决方案可以是通用的,无论我需要多少索引列,解决方案都可以处理)

最佳答案

创建示例DataFrame

julia> df = DataFrame(Age = rand(1:100,10), Sex = rand(['M','F'],10), Rate = ran
d(10))
10x3 DataFrames.DataFrame
| Row | Age | Sex | Rate       |
|-----|-----|-----|------------|
| 1   | 2   | 'F' | 0.0125987  |
| 2   | 81  | 'F' | 0.0538013  |
| 3   | 3   | 'M' | 0.885425   |
| 4   | 92  | 'M' | 0.00412666 |
| 5   | 70  | 'M' | 0.113444   |
| 6   | 37  | 'M' | 0.845769   |
| 7   | 47  | 'M' | 0.234437   |
| 8   | 68  | 'M' | 0.791475   |
| 9   | 46  | 'M' | 0.831009   |
| 10  | 30  | 'M' | 0.812764   |

根据多个条件选择行:

julia> df[(df[:Age].==47) & (df[:Sex].=='M'),:]
1x3 DataFrames.DataFrame
| Row | Age | Sex | Rate     |
|-----|-----|-----|----------|
| 1   | 47  | 'M' | 0.234437 |

通过 id 选择列:

julia> df[(df[:Age].>47) & (df[:Sex].=='M'),3]
3-element DataArrays.DataArray{Float64,1}:
 0.00412666
 0.113444
 0.791475

选择最后一列:

julia> df[(df[:Age].>47) & (df[:Sex].=='M'),end]
3-element DataArrays.DataArray{Float64,1}:
 0.00412666
 0.113444
 0.791475

选择多列:

julia> df[(df[:Age].>47) & (df[:Sex].=='M'),[1,3]]
3x2 DataFrames.DataFrame
| Row | Age | Rate       |
|-----|-----|------------|
| 1   | 92  | 0.00412666 |
| 2   | 70  | 0.113444   |
| 3   | 68  | 0.791475   |

也可以使用列符号来做同样的事情,例如:Rate 而不是 id。

关于Julia 按前一列读取数据框索引中的最后一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34960632/

相关文章:

julia - Julia 中是否存在懒惰和迭代的 `map`?

julia - 如何在 Juno 中创建类似于 IJulia 或 R Notebook 的 Julia 笔记本

image - Julia - 如何使用函数 `imshow` 调整图像大小?

julia - 奇数类型构造行为

julia - 我想在 Julia 中对图像进行逻辑屏蔽

julia - 如何使用户定义的函数描述 ("docstrings") 可用于 julia REPL?

arrays - Julia 方法实现 Python 等效列表列表

julia - 在 Julia 中使用 `Symbol` 或 `String` 更改复合类型字段的值

matlab - 为什么行向量的切片不返回行向量?

julia - 使用 show() 打印输出