python - dask 创建组合列以模拟按 2 列排序
问题描述
目前df.sort_values 中的 dask仅接受按 1 列排序。
我有一个具有这种结构的大文件
我不知道如何先按整数列对数据进行排序,然后按日期排序
- 2000-01-01;43000
- 2000-01-02;43000
- 2000-01-01;25000
- 2000-01-02;25000
我认为创建一个组合列并对其进行排序将是最好的选择。问题是我不知道如何创建一个完成此操作的列。也许还有另一种选择可以做到这一点,而无需在 Dask 中创建一个组合列...
谢谢!
解决方案
假设d['col1']
是datetime
-type,并且d['col2']
是int
-type:
import struct
import numpy as np
# create a timedelta with days resolution as int
d['col1_int'] = ((d['col1_dt'] -
d['col1_dt'].min())/np.timedelta64(1,'D')
).astype(int)
d['sort_col'] = d.apply(lambda r: struct.pack("ll",r.col1_int,r.col2))
d = d.set_index('sort_col')
d = d.map_partitions(lambda x: x.sort_index())
从这个答案重做
推荐阅读
- r - 如何沿一维比较不同长度的 3d 数组?
- c++ - 为什么使用默认构造函数“{}”而不是“= default”会有性能变化?
- c# - 通过 ASP.NET Core 2.2 在 Windows Server 2016 中无头 Google Chrome 不会触发
- azure - 如何在 azure 上找到我的 ubuntu vm 的带宽?
- html - Django:html不使用块内容显示表单
- css - Bootstrap如何避免最小宽度的列中断
- smartcontracts - 创建 abi 和 wsm 文件后,如何使用 SET 在测试网上的 EOS 中部署智能合约?
- go - 带有 go 的 Twitter 机器人在 Heroku 中崩溃
- css - Style Prime-ng dropdown child elements
- python - [Windows,python]如何让subprocee.Popen()启动的进程在父进程死亡时自动终止?