在 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
我正在尝试将一些 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