比较不同Deedle数据帧中的值时出现问题
本文关键字:问题 Deedle 数据帧 比较 | 更新日期: 2023-09-27 18:00:21
我有两个名称不同的相同文件,用于填充两个不同的Deedle数据帧。然而,当我试图比较两个数据帧中相同的值时,程序会认为它们不相等。
var Df1 = Frame.ReadCsv("C:/File1.csv");
var Df2 = Frame.ReadCsv("C:/File2.csv");
if (Df1["Header1", 3] == Df2["Header1",3])
{
Console.WriteLine("The computer sees them as equal");
}
else
{
Console.WriteLine("The computer sees them as not equal");
}
如果我对这两个值进行强制转换,那么计算机会认为它们是相等的。有没有办法确定这两个值是否相等而不进行强制转换?
var Df1 = Frame.ReadCsv("C:/File1.csv");
var Df2 = Frame.ReadCsv("C:/File2.csv");
if ((string)Df1["Header1", 3] == (string)Df2["Header1",3])
{
Console.WriteLine("The computer sees them as equal");
}
else
{
Console.WriteLine("The computer sees them as not equal");
}
我只能猜测,Df2["Header1",3]
返回一个object
。
如果您查看以下链接==操作符MSDN,您将看到reference types
的==
的默认实现仅当它是相同的对象(堆上的相同地址)时才返回true
。
由于Df1["Header1",3]
和Df2["Header1",3]
是两个不同的对象,==
运算符返回false
。当您将结果强制转换为string
时,将使用值比较(请参阅上面的同一链接),==
运算符将返回true
。
根据Deedle ReadCsv文档,只推断出基元类型,因此,如果该列包含日期,则返回类型将是上面描述的导致对象的行为