首页 > 解决方案 > 在 C# 中使用 Deedle 添加两列

问题描述

给定以下 CSV 文件

A,B
2,3
5,7
9,11

我想添加两列,导致

A,B,C
2,3,5
5,7,12
9,11,20

使用 C# 和 Deedle。

using Deedle;
using System.IO;
using System.Linq;
namespace NS
{
    class AddTwoColumns
    {
        static void main(string[] args)
        {
            var root = "path/to";
            var df = Frame.ReadCsv(Path.Combine(root, "data.csv"));

            var a = df.GetColumn<int>("A");
            var b = df.GetColumn<int>("B");
            var c = df.Select(x => x.a + x.b);
            df.AddColumn("C", c);
            df.Print();
        }
    }
}

参考资料 和教程(seriesframe )都不 是特别有启发性。

df.Select()这个简单的操作正确的是什么?

标签: c#deedle

解决方案


a并且b正是Deedle.Series您可以对其进行数值运算的对象。因此,您只需添加两个系列即可:

// simply add the series
var c = a + b;
df.AddColumn("C", c);
df.Print();

// output
     A B  C
0 -> 2 3  5
1 -> 5 7  12
2 -> 9 11 20

统计和计算部分(您链接到的页面)简要提到了算术运算。它还提供了有关缺失数据的注释,您可能需要考虑:

逐点和标量运算符会自动传播缺失的数据。当计算s1 + s2并且其中一个系列不包含某个键的数据时k,则生成的系列将不包含 的数据k


推荐阅读