我正在尝试将一些代码从 Pandas 移植到 Koalas,以利用 Spark 的分布式处理。我正在获取一个数据框并将其分组到 A 和 B 上,然后应用一系列函数来填充新数据框的列。这是我在 Pandas 中使用的代码:
new = old.groupby(['A', 'B']) \
.apply(lambda x: pd.Series({
'v1': x['v1'].sum(),
'v2': x['v2'].sum(),
'v3': (x['v1'].sum() / x['v2'].sum()),
'v4': x['v4'].min()
})
)
我相信它运行良好,并且生成的数据框在价值方面似乎是正确的。
我只有几个问题:
这个错误是否意味着我的方法将来会被弃用?
/databricks/spark/python/pyspark/sql/pandas/group_ops.py:76: UserWarning: It is preferred to use 'applyInPandas' over this API. This API will be deprecated in the future releases. See SPARK-28264 for more details.
如何将分组列重命名为“A”和“B”而不是
"__groupkey_0__ __groupkey_1__"?
正如您所注意到的,我不得不调用 pd.Series ——有没有办法在考拉中做到这一点?调用 ks.Series 给我以下错误,我不确定如何实现:
PandasNotImplementedError: The method `pd.Series.__iter__()` is not implemented. If you want to collect your data as an NumPy array, use 'to_numpy()' instead.
感谢您提供的任何帮助!