Spotfire:使用 ironpython 的列的平均值,使用表达式

Spotfire: average of a column with ironpython, using expression

我希望在我的 table 的 Spotfire 中执行一些基本的统计功能。例如:我想计算 [A] 列中所有值的平均值,我需要将此值作为 IronPython 中的变量。

我可以在 IronPython 中读取列中的所有值,对它们求和并计算平均值,但由于我还想使用其他 Spotfire 的统计函数,我希望我可以以某种方式调用 Spotfire API并使用表达式(与创建计算列的方式相同)。 像这样:

expr = "Avg([{col}])".format(col = colName)

现在我需要一种方法来调用此表达式并将结果存储在一个变量中以备后用。

在伪代码中:

colName = "Weight"
value = API.SomeFunction(expr)

如果可能的话,如果有任何提示和信息,我将不胜感激。

以防其他人可能从中受益。 到目前为止我发现的最佳近似值是这个(代码的相关摘录):

row6 = "Srel"
for col in SampleColumns:
    colExp = "StdDev([{col}]) / Avg([{col}]) * 100".format(col = col)
    colName = col + colExp[0:colExp.find("(")]
    sT.Columns.AddCalculatedColumn(colName, colExp)
    val = getFirstFloatValue(sT, colName)
    row6 += TAB + str(val)
    sT.Columns.Remove(colName)
row6 += EOL

我为表达式的每个组合创建计算列一列,我需要它的值。然后我读取计算列的第一个值(所有值都相同):

def getFirstFloatValue(table, colName):
    cursor = DataValueCursor.Create[float](table.Columns[colName])
    for row in table.GetRows(cursor):
        return cursor.CurrentValue
    return 

我使用值 val 然后删除列。

我相信可能有更好的解决方案,但我还是要发布这个,因为其他人可能会从这个解决方案中受益。