首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# Deedle AggregateRowsBy语法

C# Deedle AggregateRowsBy语法
EN

Stack Overflow用户
提问于 2016-12-05 15:12:29
回答 2查看 718关注 0票数 0

我有这样的数据集:

代码语言:javascript
复制
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聚合这个数据集,然后汇总和值:

代码语言:javascript
复制
Group1  Group2  Value
  A       1     350.6
  A       2     30.5
  B       1     534.3
  C       2     55.7

我知道在C#中,Deedle有一个叫做"AggregateRowsBy“的方法,但是它的F#语法不适用于C#。所以我尝试过这样的方法,但没有用:

代码语言:javascript
复制
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#中的使用。有人能帮我吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-05 15:22:23

编译器无法计算出AggregateRowsBy调用的类型参数,最简单的修复方法是

代码语言:javascript
复制
var test2 = testdata.AggregateRowsBy<double, dynamic>(new []{ "Group1", "Group2" },
                                    new[] { "Value" },
                                    x => x.NumSum());
票数 1
EN

Stack Overflow用户

发布于 2016-12-05 15:33:17

代码语言:javascript
复制
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来做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40977391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档