【发布时间】:2019-11-23 13:02:33
【问题描述】:
我有一个包含 3 列的大型数据集:
sku center units
0 103896 1 2.0
1 103896 1 0.0
2 103896 1 5.0
3 103896 1 0.0
4 103896 1 7.0
5 103896 1 0
我需要使用groupby-apply。
def function_a(x):
return np.sum((x > 0).iloc[::-1].cumsum() == 0)
def function_b(x):
return x.eq(0).sum()/((x.eq(0)&x.shift().ne(0)).sum())
使用 dask (df.groupby(['sku', 'center'])['units'].apply(function_a), meta=(float)),我在应用第一个函数时遇到很多问题,因为 dask 不支持索引操作 (.iloc),结果完全错误。
是否可以使用 pyspark UDF 应用这些功能?
【问题讨论】:
-
您可以使用与
pandas_udfGROUPED_AGG相同的功能 -
在使用 dask 时,如何确保按元素分组的行已排序?因为
'units'的行/条目的不同顺序会给您在.cumsum()上的不同结果? -
每个组 ['sku', 'center'] 都按日期降序排列。但是当我使用 iloc 函数时,它似乎会随机播放。
标签: python pandas pandas-groupby dask