【问题标题】:Using deedle from IronPython使用 IronPython 的 deedle
【发布时间】:2013-12-23 20:08:55
【问题描述】:

可以从 IronPython 有效地使用 Deedle 吗?这样做似乎有悖常理,但看起来让 Pandas 从 IronPython 完全工作可能很困难 - 有一些使用 IronClad 的非活动移植项目和方法,但不清楚是否有人真正成功地这样做了。使用像 Deedle 这样的纯 .NET 解决方案似乎是一条更好的路线。

【问题讨论】:

  • 你见过this answer吗?看起来熊猫是不行的......

标签: ironpython deedle


【解决方案1】:

Deedle 是一个标准的 .NET 库。我对 IronPython 的了解有些有限,但我认为它可以让您使用 .NET 语言——因此它也应该与 Deedle 一起使用。 Deedle 文档has a number of examples showing how to use it from C#,因此如果您知道如何使用 IronPython 中的其他 .NET 库,您应该能够将 C# 示例转换为 IronPython。

【讨论】:

    【解决方案2】:

    我个人的经验是,试图让 Pandas 等 CPython 库在 Ironpython 上工作是一条死路。虽然there is a way to do it,但是非常不稳定,不可靠。

    Deedle 似乎是下一个显而易见的选择,而且它确实有效。您只需要添加对程序集的引用,并注意 IronPython 如何处理泛型参数。

    import clr;
    import random;
    from System import Tuple;
    import itertools;
    
    clr.AddReferenceToFileAndPath ("C:\\temp\\testedeedle\\packages\\FSharp.Core\\lib\\net40\\FSharp.Core.dll")
    clr.AddReferenceToFileAndPath ("C:\\temp\\testedeedle\\packages\\Deedle\\lib\\net40\\Deedle.dll")
    
    from Deedle import *
    

    那么你可以使用现有的 Api 创建数据帧,例如:

    myPythonList = [("ID1", 1.1, 1.2), 
                    ("ID2", 1.1, 1.2),
                    ("ID3", 1.1, 1.2),
                    ("ID4", 1.1, 1.2)];
    
    values = [[Tuple.Create[str,str,float](x[0], "FirstValue", x[1]), Tuple.Create(x[0], "SecondValue", x[2])] for x in myPythonList]
    tupleList =list((itertools.chain(*values)))
    frame = Frame.FromValues[str,str,float](tupleList);
    FrameExtensions.Print(frame);
    series_mult = frame.FirstValue + frame.SecondValue
    print (series_mult)
    frame2 = frame * 2
    FrameExtensions.Print(frame2);
    

    产量...

           FirstValue SecondValue 
    ID1 -> 1.1        1.2         
    ID2 -> 1.1        1.2         
    ID3 -> 1.1        1.2         
    ID4 -> 1.1        1.2         
    
    series [ ID1 => 2.3; ID2 => 2.3; ID3 => 2.3; ID4 => 2.3]
           FirstValue SecondValue 
    ID1 -> 2.2        2.4         
    ID2 -> 2.2        2.4         
    ID3 -> 2.2        2.4         
    ID4 -> 2.2        2.4   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 2010-09-12
      • 2014-05-08
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多