如何为 dask.dataframe 指定元数据

How to specify metadata for dask.dataframe

文档提供了很好的示例,how metadata can be provided。但是,在为我的数据框选择正确的数据类型时,我仍然不确定。

可用的基本数据类型是通过 numpy 提供的。查看 documentation 列表。

此集合中不包含日期时间格式(例如 datetime64),可在 pandas and numpy 文档中找到更多信息。

dask 数据帧的元参数通常需要一个空的 pandas 数据帧来保存列、索引和数据类型的定义。

构建此类 DataFrame 的一种方法是:

import pandas as pd
import numpy as np
meta = pd.DataFrame(columns=['a', 'b', 'c'])
meta.a = meta.a.astype(np.int64)
meta.b = meta.b.astype(np.datetime64)

还有一种方法可以为 pandas 数据框的构造函数提供 dtype,但是,我不确定如何为每个单独的列提供它们。如您所见,不仅可以为数据类型提供 "name",还可以提供实际的 numpy dtype。

关于您的最后一个问题,您要查找的数据类型是 "object"。例如:

import pandas as pd

class Foo:
    def __init__(self, foo):
        self.bar = foo

df = pd.DataFrame(data=[Foo(1), Foo(2)], columns=['a'], dtype='object')
df.a
# 0    <__main__.Foo object at 0x00000000058AC550>
# 1    <__main__.Foo object at 0x00000000058AC358>

Dask.dataframe 和 Pandas 都使用 NumPy 数据类型。特别是,您可以将其中的任何内容传递给 np.dtype。这包括以下内容:

  1. NumPy dtype 对象,例如 np.float64
  2. Python 类型对象,如 float
  3. NumPy dtype 字符串,如 'f8'

这是从 NumPy 文档中获取的更广泛的列表:http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html#specifying-and-constructing-data-types