dask.dataframe.DataFrame.repartition

dask.dataframe.DataFrame.repartition

DataFrame.repartition(divisions=None, npartitions=None, partition_size=None, freq=None, force=False)

沿新分区重新分区数据框

参数
部门列表,可选

用于将数据框分割成多个分区的“分界线”。对于 divisions=[0, 10, 50, 100],将会有三个输出分区,其中新的索引分别包含 [0, 10)、[10, 50) 和 [50, 100)。参见 http://www.aidoczh.com/dask/dataframe-design.html#partitions。仅在未指定 npartitions 和 partition_size 时使用。如果给定一个整数,这将委托给 npartitions,如果给定一个字符串,则将委托给 partition_size(见下文)。

npartitionsint, 可选

输出分区的大致数量。仅在未指定 partition_size 时使用。使用的分区数量可能略低于 npartitions,但绝不会更高。

partition_size: int 或 string, 可选

每个分区的最大内存字节数。可以使用数字或类似5MB的字符串。如果指定,npartitions和divisions将被忽略。请注意,该大小反映了由``pandas.DataFrame.memory_usage``计算的字节数,这不一定与存储到磁盘时的大小匹配。

警告

此关键字参数触发计算以确定每个分区的内存大小,这可能很耗费资源。

频率str, pd.Timedelta

用于分区时间序列数据的周期,如 '7D''12h'pd.Timedelta(hours=12)。假设使用 datetime 索引。

强制bool, 默认 False

允许扩展现有的分区。如果为 False,则新分区的上下界必须与旧分区相同。

注释

必须指定 divisionsnpartitionspartition_sizefreq 中的一个。如果不是这种情况,将引发 ValueError

另请注意,len(divisions) 等于 npartitions + 1。这是因为 divisions 表示每个分区的上下限。第一个项目是第一个分区的下限,第二个项目是第二个分区的下限和第一个分区的上限,依此类推。倒数第二个项目是最后一个分区的下限,最后一个(额外的)项目是最后一个分区的上限。

示例

>>> df = df.repartition(npartitions=10)  
>>> df = df.repartition(divisions=[0, 5, 10, 20])  
>>> df = df.repartition(freq='7d')