gpt4 book ai didi

dataframe - Julia 数据帧 : remove column by name

转载 作者:行者123 更新时间:2023-12-02 22:14:44 25 4
gpt4 key购买 nike

Julia 中的 DataFrame 类型允许您将其作为数组访问,因此可以通过索引删除列:

df = df[:,[1:2,4:end]] # remove column 3

这种方法的问题是我通常只知道列的名称,而不知道它在表中的列索引。

是否有内置方法可以按名称删除列?

或者,还有比这更好的方法吗?

colind = findfirst(names(df), colsymbol)
df = df[:,[1:colind-1,colind+1:end]]

以上是容易失败的;有一些边缘情况(单列、第一列、最后一列、符号不在表中等)

谢谢

最佳答案

您可以使用选择!:

julia> df = DataFrame(A = 1:4, B = ["M", "F", "F", "M"], C = 2:5)
4x3 DataFrame
|-------|---|-----|---|
| Row # | A | B | C |
| 1 | 1 | "M" | 2 |
| 2 | 2 | "F" | 3 |
| 3 | 3 | "F" | 4 |
| 4 | 4 | "M" | 5 |

julia> select!(df, Not(:B))
4x2 DataFrame
|-------|---|---|
| Row # | A | C |
| 1 | 1 | 2 |
| 2 | 2 | 3 |
| 3 | 3 | 4 |
| 4 | 4 | 5 |

对于更一般的操作,请记住您也可以传递符号数组或 bool 数组,以及任意复杂的选择,例如

julia> df[~[(x in [:B, :C]) for x in names(df)]]
4x1 DataFrame
|-------|---|
| Row # | A |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |

julia> df[setdiff(names(df), [:C])]
4x1 DataFrame
|-------|---|
| Row # | A |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |

也可以。

关于dataframe - Julia 数据帧 : remove column by name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24665439/

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