在 C# Deedle Dataframe 中跨 3 列获取 Max

Getting Max across 3 columns in C# Deedle Dataframe

我正在尝试将一些 pandas 代码转换为 Deedle 和 C#。

首先,数据框是 ,因为它是按日期编制索引的。

Frame.FromRecords(fetchOhlcVsResults).IndexRows<DateTime>("datetime").SortRowsByKey()

接下来,我将在框架中成功添加其他几个计算列。我坚持翻译的部分是来自 pandas:

的片段
tr = df[['high-low', 'high-pc', 'low-pc']].max(axis=1)

这只是从三列的行中取最大值。 这是我尝试过的:

var tr = df.Columns[new[] { "high_low", "high_pc", "low_pc" }].IndexRows<DateTime>("datetime").SortRowsByKey();

这给了我一个新的数据框。不知道从这里去哪里。

最终,我想将生成的系列作为新列添加到原始数据框中。

df.AddColumn("tr", tr);

如果我理解这个问题,问题是如何计算数据框的(某些)列而不是行的最大值(这是 axis 参数似乎在pandas).

在这种情况下,我将对数据框使用 Select 操作以将函数应用于每一行。然后,您可以 select 您需要的列并计算这些列的最大值。

var data = new[] {
  new { Date=new DateTime(2020,1,1), Hi1=10, Hi2=15 },
  new { Date=new DateTime(2020,1,2), Hi1=12, Hi2=11 } };
var df = Frame.FromRecords(data).IndexRows<DateTime>("Date");
var max = df.Rows.Select(r => r.Value[new[] { "Hi1", "Hi2" }].Max());
df.AddColumn("Hi", max);
df.Print();

这将计算以下数据框中的“Hi”列:

              Hi1 Hi2 Hi
01/01/2020 -> 10  15  15
02/01/2020 -> 12  11  12