我是Deedle的新手。我到处寻找可以帮助我完成以下任务的例子:
我目前的方法如下。首先 - 由于缺少值,它不起作用,我不知道如何在添加数据帧时轻松处理它们。第二 - 我想知道是否有一种更优雅的方式来做到这一点。
// Remove unused columns
var df = dfRaw.Columns[new[] { "Date", "ID", "Title", "Sales" }];
// Index data frame using 3 columns
var dfIndexed = df.IndexRowsUsing(r => Tuple.Create(r.GetAs<DateTime>("Date"), r.GetAs<string>("ID"), r.GetAs<string>("Title")) );
// Remove indexed columns
dfIndexed.DropColumn("Date");
dfIndexed.DropColumn("ID");
dfIndexed.DropColumn("Title");
// Add data frames. Does not work as it will add only
// keys existing in both data frames
dfTotal += dfIndexed
表1
Date,ID,Title,Sales,Market
2014-03-01,ID1,Title1,1,US
2014-03-01,ID1,Title1,2,CA
2014-03-03,ID2,Title2,3,CA
表2
Date,ID,Title,Sales,Market
2014-03-02,ID1,Title1,2,US
2014-03-03,ID2,Title2,2,CA
预期结果
Date,ID,Title,Sales
2014-03-01,ID1,Title1,3
2014-03-02,ID1,Title1,2
2014-03-03,ID2,Title2,5
答案 0 :(得分:0)
我认为使用元组的方法是有道理的。
有点不幸的是,添加时没有简单的方法来指定默认值! 我能想到的最简单的解决方案是将两个系列重新对齐到同一组键并使用填充操作来提供默认值。使用简单系列作为一个例子,像这样的东西应该做的伎俩:
var allKeys = seris1.Keys.Union(series2.Keys);
var aligned1 = series1.Realign(allKeys).FillMissing(0.0);
var aligned2 = series2.Realign(allKeys).FillMissing(0.0);
var res = aligned1 + aligned2;