C# Deedle AggregateRowsBy 语法
C# Deedle AggregateRowsBy Syntax
我有这样的数据集:
Group1 Group2 Value
A 1 350.6
A 2 30.5
B 1 34.1
B 1 500.2
C 2 20.7
C 2 35
我想按 Group1 和 Group2 聚合此数据集,然后求和值:
Group1 Group2 Value
A 1 350.6
A 2 30.5
B 1 534.3
C 2 55.7
我知道在 C# 中 Deedle 有一个名为 "AggregateRowsBy" 的方法,但是它的 F# 语法不适用于 C#。所以我试过这样的方法,还是不行:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Deedle;
namespace testDeedle
{
class Program
{
static void Main(string[] args)
{
var testdata = Frame.ReadCsv(@"test_data.csv");
var test2 =testdata.AggregateRowsBy(new string[2] {"Group1","Group2"},
new string[1] {"Value"},
x=>x.NumSum());
test2.Print();
}
}
}
遗憾的是,我没有找到足够的在线资源来演示 Deedle 在 C# 中的用法。谁能帮我吗?谢谢!
编译器无法找出 AggregateRowsBy
调用的类型参数,最简单的修复方法是
var test2 = testdata.AggregateRowsBy<double, dynamic>(new []{ "Group1", "Group2" },
new[] { "Value" },
x => x.NumSum());
var result = testdata.Tables[0].AsEnumerable()
.GroupBy(x =>new { Group1 = x.Field<string>("Group1"), Group2 = x.Field<int>("Group2") })
.Select(g=> new { Group1 = g.Key.Group1, Group2 = g.Key.Group2, Value = g.Sum(x=>x.Field<int>("Value"))}).ToList();
你可以使用 linq 来完成。
我有这样的数据集:
Group1 Group2 Value
A 1 350.6
A 2 30.5
B 1 34.1
B 1 500.2
C 2 20.7
C 2 35
我想按 Group1 和 Group2 聚合此数据集,然后求和值:
Group1 Group2 Value
A 1 350.6
A 2 30.5
B 1 534.3
C 2 55.7
我知道在 C# 中 Deedle 有一个名为 "AggregateRowsBy" 的方法,但是它的 F# 语法不适用于 C#。所以我试过这样的方法,还是不行:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Deedle;
namespace testDeedle
{
class Program
{
static void Main(string[] args)
{
var testdata = Frame.ReadCsv(@"test_data.csv");
var test2 =testdata.AggregateRowsBy(new string[2] {"Group1","Group2"},
new string[1] {"Value"},
x=>x.NumSum());
test2.Print();
}
}
}
遗憾的是,我没有找到足够的在线资源来演示 Deedle 在 C# 中的用法。谁能帮我吗?谢谢!
编译器无法找出 AggregateRowsBy
调用的类型参数,最简单的修复方法是
var test2 = testdata.AggregateRowsBy<double, dynamic>(new []{ "Group1", "Group2" },
new[] { "Value" },
x => x.NumSum());
var result = testdata.Tables[0].AsEnumerable()
.GroupBy(x =>new { Group1 = x.Field<string>("Group1"), Group2 = x.Field<int>("Group2") })
.Select(g=> new { Group1 = g.Key.Group1, Group2 = g.Key.Group2, Value = g.Sum(x=>x.Field<int>("Value"))}).ToList();
你可以使用 linq 来完成。