You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Deedle中对任意类型数据行列重排并保留缺失值

在Deedle中对任意类型数据透视并保留缺失值

你的场景中每个Key和Attribute的组合仅对应一个值(或缺失),不需要用Sum()这类数值聚合方法,直接提取分组内的唯一值即可保留原数据(包括缺失值)。

修改后的代码如下:

open Deedle

let str = "Key;Attribute;Value\nK1;A;01.01.2000\nK1;B;\nK2;A;02.02.2020\nK2;B;03.03.2030"
let bytes = System.Text.Encoding.UTF8.GetBytes str
let stream = new MemoryStream(bytes)

let df =
    Frame.ReadCsv(
        stream = stream,
        separators = ";",
        hasHeaders = true
    )

// 透视处理,替换聚合逻辑
let df1 = 
    df
    |> Frame.pivotTable 
        (fun _ r -> r.GetAs<string>("Key")) 
        (fun _ r -> r.GetAs<string>("Attribute")) 
        (fun frm -> frm.GetColumn("Value") |> Series.firstValue)

df1.Print(true)

运行后会得到你期望的结果:

A                     B                                   
      (DateTime)            (DateTime)                          
K1 -> 1/1/2000 12:00:00 AM  <missing>            
K2 -> 2/2/2020 12:00:00 AM  3/3/2030 12:00:00 AM                      

关键说明

  • Series.firstValue会直接返回分组序列中的第一个值,若原数据为缺失值,会保留<missing>标记,完美适配你的需求。
  • 如果后续遇到同一Key+Attribute组合有多行数据的场景,可根据业务需求替换为Series.lastValue,或自定义逻辑提取目标值。

内容的提问来源于stack exchange,提问作者jim108dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:48:26