黎曼项目功能的变量参数

时间:2017-09-28 05:15:48

标签: clojure riemann

所以我正在开发一个流函数,它将总结几个事件的一些指标。为此,我使用project函数,它看起来像这样:

(project [(func (:service event) (nth service-list 0))      
          (func (:service event) (nth service-list 1))
          (func (:service event) (nth service-list 2))]
         (..))

service-list是周围函数的参数,它包含必须一起添加的服务向量。 func是一个函数,它接受两个参数并返回true / false使用上面的代码片段工作正常,但我希望能够简化它以便更大的矢量或小于3个元素可行。

到目前为止,我有这个:

    (project (mapv (fn[service] (
                   `func (:service event) ~service)
                   ) service-list)))
             (..)

我认为它会返回一个未评估的函数向量。一旦我意识到project是一个宏,我就采用了这种方法。不知道我做的是否正确......

1 个答案:

答案 0 :(得分:1)

您面临的问题是您无法动态组装宏调用的参数。因此,您需要动态组合整个宏调用。

您可以构建一个clojure表单并在其上调用eval。请采取以下措施。

inpath=r"P:\Data.xlsx"

df1=pd.DataFrame()

for i in ["67059070","67059075","67060055","Screwing Total"]:
    df=pd.read_excel(io=inpath,header=0,sheetname="{0}".format(i))
    df1["Gel.Menge"]=df["Gel.Menge"].where(df["Gel.Menge"]!=0).dropna()
    print(np.round(df1.mode()))    
    print(np.round(df1.describe())

或者,您也可以使用riemann.streams/project*函数来使用谓词函数而不是 where 表达式。