我试图在PySpark中使用Grouped Map Pandas UDF运行指数加权移动平均。但是它似乎不起作用:
def ExpMA(myData):
from pyspark.sql.functions import pandas_udf
from pyspark.sql.functions import PandasUDFType
from pyspark.sql import SQLContext
df = myData
group_col = 'Name'
sort_col = 'Date'
schema = df.select(group_col, sort_col,'count').schema
print(schema)
@pandas_udf(schema, PandasUDFType.GROUPED_MAP)
def ema(pdf):
Model = pd.DataFrame(pdf.apply(lambda x: x['count'].ewm(span=5, min_periods=1).mean()))
return Model
data = df.groupby('Name').apply(ema)
return data
我也尝试在PySpark中直接编写ewma方程,而不是使用Pandas udf,但问题在于ewma方程包含当前ewma的滞后。
apply
函数。 - Landmaster