无法比较不同Deedle数据帧中的值

时间:2015-06-30 00:33:30

标签: c# dataframe deedle

我有两个不同名称的相同文件,用于填充两个不同的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");
}

1 个答案:

答案 0 :(得分:1)

我只能猜测,Df2["Header1",3]会返回object
如果你看下面的链接 == operator MSDN,您会看到==的{​​{1}}的默认实现只有在它是同一个对象(堆上的相同地址)时才会返回reference types
由于trueDf1["Header1",3]是两个不同的对象Df2["Header1",3],因此运算符返回==。将结果转换为false时,会使用值比较(请参阅上面的相同链接),string运算符返回==
根据Deedle ReadCsv文档,只推断了原始类型,因此,如果该列包含日期,则返回类型将是导致上述行为的对象