pyspark - Dask 等效于 pyspark 超前和滞后功能
问题描述
是否有可能在数据帧中接收到可以通过或窗口函数dask
接收的类似结果?我想转换以下数据框lag
lead
pyspark
+-------+
| value |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
像这样
+-------+------------+------------+
| value | prev_value | next_value |
+-------+------------+------------+
| 1 | NaN | 2 |
| 2 | 1 | 3 |
| 3 | 2 | NaN |
+-------+------------+------------+
解决方案
Dask 数据框只是反映了 pandas 界面。在这种情况下,您想要的方法是shift:
In [3]: import pandas as pd
In [4]: df = pd.DataFrame({'a': range(5)})
In [5]: import dask.dataframe as dd
In [6]: ddf = dd.from_pandas(df, npartitions=2)
In [7]: out = ddf.assign(prev_a=ddf.a.shift(1), next_a=ddf.a.shift(-1))
In [8]: out.compute()
Out[8]:
a prev_a next_a
0 0 NaN 1.0
1 1 0.0 2.0
2 2 1.0 3.0
3 3 2.0 4.0
4 4 3.0 NaN
但是,如果您尝试对齐行以进行某种窗口或滚动计算,您可能对map_overlap更感兴趣,它会更高效。
推荐阅读
- json - Extracting a list of dicts for a Pandas column
- java - 如果测试用例在 testNG 中失败,如何运行类
- unity3d - Stats 和 Frame Debugger 计数中的不同批次数(统计中为 222,调试器中为 55)
- java - 以正则表达式拆分文本文件并创建数组
- tensorflow - TFlite 解释器在为量化模型分配张量时引发 RuntimeError。涉及 scale_diff 和 output_scale 的断言失败
- android - Android 上的 Android 蓝牙交叉传输密钥派生支持
- ios - IOS 以低帧率运行我的 Unity 项目
- powershell - Connect-AzureAD 不适用于 Powershell 核心
- r - 如何将一个数据框列中的 N 个值交换为 N 的任何值和任何 n(行)?
- php - 如何使用 Laravel 迁移更新值?