如何为 dask 的 meta 中的所有(超过 20.000 个)列指定相同的数据类型?

Posted

技术标签:

【中文标题】如何为 dask 的 meta 中的所有(超过 20.000 个)列指定相同的数据类型?【英文标题】:How to specify the same datatype for all (over 20.000) columns in meta for dask? 【发布时间】:2022-01-13 05:14:13 【问题描述】:

我有一个用户定义的函数 tmp_func 和一个 dask 数据框 df。我想在df的每一组上应用这个函数。

def tmp_func(s_df):
    ...
    return(s_df)

result = df.groupby('id').apply(tmp_func, meta = meta)
result = result.compute(scheduler = 'processes')

recommended指定tmp_func返回的dataframe列的dtypes。就我而言,tmp_func 生成的数据框有超过 20.000 列,其中仅包含自然数。所以我认为np.int8 是数据类型。

是否可以指定所有列都具有相同的数据类型np.int8?用超过 20,000 个元素的字典来指定它是一场噩梦。

【问题讨论】:

【参考方案1】:

只需使用 dict-comprehension

result = df.groupby('id').apply(tmp_func, meta = col: np.int8 for col in df.columns)

【讨论】:

以上是关于如何为 dask 的 meta 中的所有(超过 20.000 个)列指定相同的数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何为超过 255 的单元格中的单个字符格式化字体

如何为 meta.yaml 中定义的目标安装要求

如何为 Windows 中的进程分配超过 2GB 的内存?

如何为所有 3 个项目都存在于选择中的 3 个项目选择 10 个随机记录

如何为超过 20 个区域启动MonitoringForRegion

如何为所有 scss 文件定义 sass 变量