gpt4 book ai didi

f# - Deedle:将时间序列分组在前 3 名和休息中

转载 作者:行者123 更新时间:2023-12-05 01:01:48 26 4
gpt4 key购买 nike

我有一个带有选举数据的 Deedle 系列,例如:

   "Party A", 304
"Party B", 25
"Party C", 570
....
"Party Y", 2
"Party Z", 258

我想创建一个这样的新系列:
   "Party C", 570
"Party A", 304
"Party Z", 258
"Others", 145

所以我想按原样取前 3 名,并将所有其他人作为新行加起来。做这个的最好方式是什么?

最佳答案

我认为我们在 Deedle 中没有任何东西可以使它成为单线(多么令人失望......)。所以我能想到的最好的方法是获取前 3 名派对的 key ,然后使用 Series.groupInto使用键选择器返回党名(对于前 3 名)或返回“其他”(对于其他党):

// Sample data set with a bunch of parties
let election =
[ "Party A", 304
"Party B", 25
"Party C", 570
"Party Y", 2
"Party Z", 258 ]
|> series

// Sort the data by -1 times the value (descending)
let byVotes = election |> Series.sortBy (~-)
// Create a set with top 3 keys (for efficient lookup)
let top3 = byVotes |> Series.take 3 |> Series.keys |> set

// Group the series using key selector that tries to find the party in top3
// and using an aggregation function that sums the values (for one or multiple values)
byVotes |> Series.groupInto
(fun k v -> if top3.Contains(k) then k else "Other")
(fun k s -> s |> Series.mapValues float |> Stats.sum)

关于f# - Deedle:将时间序列分组在前 3 名和休息中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27530749/

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