python - 在 dask 数据框中,行与其前导之间的差异为 3 行
问题描述
我有一个CSV
文件已通过以下代码作为 dask 数据框导入:
import dask.dataframe as dd
df = dd.read_csv("name and path of the file.csv")
df.head(10)
输出
+-----+------+-----+
|col1 | col2 | col3|
+-----+------+-----+
| A | 2 | 4 |
+-----+------+-----+
| A | 4 | 5 |
+-----+------+-----+
| A | 7 | 7 |
+-----+------+-----+
| A | 3 | 8 |
+-----+------+-----+
| A | 7 | 3 |
+-----+------+-----+
| B | 8 | 9 |
+-----+------+-----+
| B | 10 | 10 |
+-----+------+-----+
| B | 8 | 9 |
+-----+------+-----+
| B | 20 | 15 |
+-----+------+-----+
我想为col1col4
中col2[n+3]/col2-1
的每个组分别创建另一列。
输出应该是
+-----+------+-----+-----+
|col1 | col2 | col3| col4|
+-----+------+-----+-----+
| A | 2 | 4 | 0.5| #(3/2-1)
+-----+------+-----+-----+
| A | 4 | 5 | 0.75| #(7/4-1)
+-----+------+-----+-----+
| A | 7 | 7 | NA |
+-----+------+-----+-----+
| A | 3 | 8 | NA |
+-----+------+-----+-----+
| A | 7 | 3 | NA |
+-----+------+-----+-----+
| B | 8 | 9 | 1.5 |
+-----+------+-----+-----+
| B | 10 | 10 | NA |
+-----+------+-----+-----+
| B | 8 | 9 | NA |
+-----+------+-----+-----+
| B | 20 | 15 | NA |
+-----+------+-----+-----+
我们可以在 pandas 上执行此任务,如下所示
df['col4'] = df.groupby('col1')['col2'].transform(lambda x: x.shift(-3)) / df['col2'] - 1
但它在黎明时不起作用。任何帮助,将不胜感激
解决方案
diff 方法现已添加到 DataFrame 和 Series,在此 PR 中:https ://github.com/dask/dask/pull/1769 。工作原理与在 pandas 中的相同。
此外,我只是要求您在可以提供索引的地方使用 diff
我想已经有一个任务来实现 Shift() 与 dask ......我已经提供了上面的链接......我希望这会回答你的问题
推荐阅读
- google-maps - Flutter - 如何在没有 map_view 的情况下集成谷歌地图
- reactjs - 反应中的 Onsubmit(e,..,index) 形式
- python - Pandas按B列排序的A列排序排名
- unity3d - 在 Unity 2018.1.6f1 Personal 上导入 HoloToolkit-Unity-2017.4.2.0 时出错
- angular - 无订阅的行为主体自动更新值
- python - Python+Bokeh:如何在 Bokeh 的线图上为点分类明智地着色?
- python - NoBackendError:使用 Python Librosa 打开 m4a 文件
- c# - 没有为此 DbContext 配置数据库提供程序 - ASP.Net Core 2.1
- antlr - 单引号文字值失败 Antlr 词法分析器
- python - 基于多列不同计数熊猫创建一列