Closed
Description
.Net Core 3.1
Microsoft.Data.Analysis Nuget package version: 0.19.1
This would be the logical way to call the method:
dataFrame.Columns["Date_left"].SetName("Date");
But, this does not result in the column being properly renamed.
The method needs to be called like this in order to work properly:
dataFrame.Columns["Date_left"].SetName("Date", dataFrame);
Here's a program to reproduce the issue:
using Microsoft.Data.Analysis;
using System;
using System.Linq;
namespace TestDataFRame
{
internal class Program
{
static void Main(string[] args)
{
DateTime?[] dates1 = { new DateTime(2022, 03, 01), new DateTime(2022, 03, 02), new DateTime(2022, 03, 03) };
double?[] closePrices = { 10.5, 12.4, 11.3 };
DateTime?[] dates2 = { new DateTime(2022, 03, 01), new DateTime(2022, 03, 02), new DateTime(2022, 03, 03), new DateTime(2022, 03, 04) };
double[] shortPercentages = { 2.34, 2.36, 3.01, 3.04 };
DataFrame dataFrame1 = new DataFrame();
dataFrame1.Columns.Add(new PrimitiveDataFrameColumn<DateTime>("Date", dates1));
dataFrame1.Columns.Add(new DoubleDataFrameColumn("ClosePrice", closePrices));
var numbers1 = dataFrame1.Columns.GetDoubleColumn("ClosePrice").ToArray();
DataFrame dataFrame2 = new DataFrame();
dataFrame2.Columns.Add(new PrimitiveDataFrameColumn<DateTime>("Date", dates2));
dataFrame2.Columns.Add(new DoubleDataFrameColumn("ShortPercentage", shortPercentages));
var numbers2 = dataFrame2.Columns.GetDoubleColumn("ShortPercentage").ToArray();
DataFrame dataFrame = dataFrame1.Merge<DateTime>(dataFrame2, "Date", "Date", joinAlgorithm: JoinAlgorithm.Left);
dataFrame.Columns["Date_left"].SetName("Date");
var dates = dataFrame.Columns.GetPrimitiveColumn<DateTime>("Date").ToArray();
}
}
}