如何处理 C# 中 deedle 系列中的空值(缺失)?
How to deal with null (missing) values in a deedle series in C#?
我应该如何处理 deedle 系列中的缺失值?
例如,我有一个包含字段 Name
和 BirthDate
的系列,其中 BirthDate
最初是 DateTime?
,我需要将 BirthDate
转换为String
.
var newDOB = df.GetColumn<DateTime?>("DOB").Select(x => x.Value.Value != null ? x.Value.Value.ToString("dd/MM/yyyy") : " ");
df.ReplaceColumn("DOB", newDOB);
这是我试过的方法,但没有用。
对我来说,将缺失的 DateTime?
值转换为 string
的最佳方法是什么?
在 C# 中处理 Deedle 系列和 Deedle 数据帧中缺失值的一般最佳方法是什么?
当您创建 Deedle 系列时,Deedle 会检测到无效值并自动将其视为缺失值 - 因此当您使用 NaN
或 null
创建系列时,这些值会自动变成缺失值(这也适用于可空值)。
此外,Select
方法会跳过所有缺失值。例如,考虑这个系列:
Series<int, DateTime?> ds = Enumerable.Range(0, 100).Select(i =>
new KeyValuePair<int, DateTime?>(i, i%5==0 ? (DateTime?)null : DateTime.Now.AddHours(i))
).ToSeries();
ds.Print();
在这里,Deedle 发现每五个值中就有一个缺失。当您调用 Select
时,它仅将操作应用于有效值并且每隔五个值保留为缺失值:
ds.Select(kvp => kvp.Value.Value.ToString("D")).Print();
如果你想对缺失值做些什么,你可以使用 FillMissing
(用指定的字符串填充它们或从系列中的前一项复制值)或 DropMissing
从系列中丢弃它们。您还可以使用 SelectOptional
调用带有 OptionalValue<V>
的函数,这样您就可以针对缺失值实现自己的自定义逻辑。
这也意味着如果你有Series<K, DateTime?>
,它真的不是很有用,因为null
值都是由Deedle处理的——所以你可以把它变成Series<K, DateTime>
使用 Select(kvp => kvp.Value.Value)
并让 Deedle 为您处理缺失值。
我应该如何处理 deedle 系列中的缺失值?
例如,我有一个包含字段 Name
和 BirthDate
的系列,其中 BirthDate
最初是 DateTime?
,我需要将 BirthDate
转换为String
.
var newDOB = df.GetColumn<DateTime?>("DOB").Select(x => x.Value.Value != null ? x.Value.Value.ToString("dd/MM/yyyy") : " ");
df.ReplaceColumn("DOB", newDOB);
这是我试过的方法,但没有用。
对我来说,将缺失的 DateTime?
值转换为 string
的最佳方法是什么?
在 C# 中处理 Deedle 系列和 Deedle 数据帧中缺失值的一般最佳方法是什么?
当您创建 Deedle 系列时,Deedle 会检测到无效值并自动将其视为缺失值 - 因此当您使用 NaN
或 null
创建系列时,这些值会自动变成缺失值(这也适用于可空值)。
此外,Select
方法会跳过所有缺失值。例如,考虑这个系列:
Series<int, DateTime?> ds = Enumerable.Range(0, 100).Select(i =>
new KeyValuePair<int, DateTime?>(i, i%5==0 ? (DateTime?)null : DateTime.Now.AddHours(i))
).ToSeries();
ds.Print();
在这里,Deedle 发现每五个值中就有一个缺失。当您调用 Select
时,它仅将操作应用于有效值并且每隔五个值保留为缺失值:
ds.Select(kvp => kvp.Value.Value.ToString("D")).Print();
如果你想对缺失值做些什么,你可以使用 FillMissing
(用指定的字符串填充它们或从系列中的前一项复制值)或 DropMissing
从系列中丢弃它们。您还可以使用 SelectOptional
调用带有 OptionalValue<V>
的函数,这样您就可以针对缺失值实现自己的自定义逻辑。
这也意味着如果你有Series<K, DateTime?>
,它真的不是很有用,因为null
值都是由Deedle处理的——所以你可以把它变成Series<K, DateTime>
使用 Select(kvp => kvp.Value.Value)
并让 Deedle 为您处理缺失值。