为什么在 Spotfire 中使用 Python 数据函数时我的新列没有正确命名

Why isn't my new column being named correctly when using a Python Data Function in Spotfire

我已经使用 TERR 在 Spotfire 中制作计算列和其他类型的数据函数,很高兴听到您现在可以使用 Python。我做了一个简单的测试以确保一切正常 (x3 = x2*2) - 这是我在 python 数据函数 window 中编写的字面脚本,然后设置输入参数(x2 作为列)并且输出参数 (x3) 成为一个新列....这些值很好但是新计算的列以名为 x2(2) 的形式出现....我查看了 input/output 参数和所有名称是正确的,但该列仍然以这种方式命名。我担心的是,这非常简单,但为什么即使一切设置正确,该列也没有被命名为脚本中的名称。甚至还有一个 Spotfire 员工的 Youtube 视频,同样的事情发生在他们身上,根本不提它。

还有其他人运行穿过这个吗?

它似乎与等效的 TERR 数据函数的工作方式不同。我咨询了 Spotfire 工程团队,这是他们的建议。它与 Python 与 TERR 中如何在内部处理列输入有关。在 Python 和 TERR 中,输入(和输出)都作为 table 传递。在 TERR 的情况下 data.frame,在 Python 的情况下 pandas.DataFrame。但是,在 TERR 的情况下,如果数据函数表示输入是一个列,这实际上是从 1 列 data.frame 转换为等效类型的向量;类似地,对于值,它从其 1x1 data.frame 转换为标量类型。在 Python 中,值输入的处理方式相同,但列输入保留为 pandas.Series,它保留了原始输入列中的列名。 也许你可以尝试不同的东西。您不希望将其转换为标准 Python 列表,因为在这种情况下,x2*2 实际上会使该列的长度增加一倍,而不是矢量化算术运算。但是你可以把它变成一个直接的 numpy 数组。您可以尝试在示例的顶部添加“x2 = x2.to_numpy()”,然后查看结果是否符合您的预期。