从ddf2 Dask数据帧中仅选择df1日期范围中的日期的最快方法是什么?所有超出范围的日期都应删除
df1-具有开始-结束日期范围的数据帧
start end
01 2018-06-25 2018-06-29
02 2019-05-06 2019-05-13
...
dd2-Dask数据帧(30M行)
(*)必须选择标记行
date value1
2018-01-01 23
2018-01-01 24
2018-01-02 545
2018-01-03 433
2018-01-04 23
*2018-06-25 234
*2018-06-25 50
*2018-06-25 120
*2018-06-26 22
*2018-06-27 32
*2018-06-27 123
*2018-06-28 603
*2018-06-29 625
2019-01-01 734
2019-01-01 241
2019-01-01 231
2019-01-02 211
2019-01-02 214
2019-05-05 234
2019-05-05 111
*2019-05-06 846
*2019-05-06 231
*2019-05-07 654
*2019-05-07 119
*2019-05-08 212
*2019-05-08 122
*2019-05-06 765
*2019-05-13 231
*2019-05-13 213
*2019-05-13 443
2019-05-14 321
2019-05-14 231
2019-05-15 123
...
输出:Dask数据帧需要附加切片
date value1
2018-06-25 234
2018-06-25 50
2018-06-25 120
2018-06-26 22
2018-06-27 32
2018-06-27 123
2018-06-28 603
2018-06-29 625
2019-05-06 846
2019-05-06 231
2019-05-07 654
2019-05-07 119
2019-05-08 212
2019-05-08 122
2019-05-06 765
2019-05-13 231
2019-05-13 213
2019-05-13 443
此代码正在工作,但我需要通过start&;df1中的结束日期范围用于过滤dd2,无需手动硬编码日期
dd2 = dd2[
(dd2['date'] >= '2018-06-25') & (dd2['date'] <= '2018-06-29') |
(dd2['date'] >= '2019-05-06') & (dd2['date'] <= '2019-05-13')
]
这看起来可能有用:
每次通过
date_ddf.__getitem__
上的map
都会返回原始帧的一部分,因此dd.concat
需要将其恢复到一起这里是另一种方法,但使用列表理解按索引进行切片,并验证(最后)切片是否正确完成
进口
指定可调输入
使用切片边界日期生成
df1
创建虚拟数据
wanted
的列,所有行都是False
现在,如果想要的行与
df1
中的行具有相同的日期,我们将把它们更改为True
wanted
列在您的实际用例中是不必要的,但只需要检查我们的工作请注意,在
wanted
列上调用.value_counts()
会显示此列中的True
值的数量,如果我们正确地对数据进行了切片,我们应该预期这些值的数量。这是使用pandas.DataFrame
中的数据完成的,但稍后我们将使用dask.DataFrame
中的相同数据完成现在,我们将数据导出到本地的多个
.parquet
文件中dask
的数据开始.parquet
文件,我们将把pandas.DataFrame
转换为dask.DataFrame
,然后设置chunksize
参数,该参数将确定创建了多少文件(chunksize
行将放置在每个导出的文件中-source)现在将所有
.parquet
文件直接加载到单个dask.DataFrame
中,并将date
列设置为索引dask.DataFrame
中时才指定它,而不是在之后更改它现在,我们准备使用^{中的日期进行切片。我们将使用列表理解来迭代
df1
中的每一行,使用该行对数据进行切片(在dask.DataFrame
中),然后调用dd.concat
(正如@joebeeson所做的那样)最后,在这个延迟的
dask
对象列表上进行计算,得到一个pandas.DataFrame
切片,以给出所需的日期如您所见,我们在
wanted
列中切掉了具有正确数量的True
值的行。我们可以使用前面用来生成后来写入磁盘的伪数据的pandas.DataFrame
来显式地验证这一点注释
相关问题 更多 >
编程相关推荐