Добавление двух столбцов с помощью Deedle в C # - PullRequest
1 голос
/ 17 октября 2019

Учитывая следующий 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();
        }
    }
}

Ни справка , ни учебник ( серия , рамка ) не особенно освещены.

Что является правильным df.Select() для этой простой операции?

1 Ответ

2 голосов
/ 17 октября 2019

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.

...