我正在尋找一種解決方案來找出我的 Julia 資料框中的第 n大資料,例如pd.Series.nlargest(n= 5, keep='first')Python 中的 。
更詳細地說,假設我有 Julia 資料框,例如;
df = DataFrame(Data1 = rand(5), Data2 = rand(5));
Data1 Data2
Float64 Float64
1 0.125824 0.841358
2 0.612905 0.337965
3 0.210736 0.66849
4 0.172203 0.377226
5 0.898269 0.448477
如何從列名Data1 中獲取第n 個最大值?
如果n = 3,下面是我的預期輸出。
5 0.898269
2 0.612905
3 0.210736
uj5u.com熱心網友回復:
這是一種有效的方法。首先,對資料框的行進行子集:
julia> df = DataFrame(Data1 = rand(10), Data2 = rand(10));
julia> df[partialsortperm(df.Data1, 1:3, rev=true), :] # if you need a data frame with top 3 rows
3×2 DataFrame
Row │ Data1 Data2
│ Float64 Float64
─────┼────────────────────
1 │ 0.959456 0.628431
2 │ 0.856696 0.144034
3 │ 0.824744 0.996384
julia> df[partialsortperm(df.Data1, 3, rev=true), :] # if you need only the 3-rd row
DataFrameRow
Row │ Data1 Data2
│ Float64 Float64
─────┼────────────────────
4 │ 0.824744 0.996384
這兩種操作都是有效的。該partialsort操作執行最少的作業來獲得所需的結果值。
如果您不想獲取資料框的所有行,而只想獲取單列的一部分,那么以下內容就足夠了:
julia> partialsort(df.Data1, 1:3, rev=true) # top 3 values
3-element view(::Vector{Float64}, 1:3) with eltype Float64:
0.959456038630526
0.856695598334831
0.8247444664227905
julia> partialsort(df.Data1, 3, rev=true) # 3-rd value
0.8247444664227905
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331161.html
上一篇:如何將3個Pandas資料幀合并到第4個資料幀以匹配列值名稱?
下一篇:由于資料框中的變數而隨機洗掉行
