繁体   English   中英

如何为dask.dataframe指定元数据

[英]How to specify metadata for dask.dataframe

文档提供了很好的示例, 如何提供元数据 但是,当我为数据帧选择正确的dtypes时,我仍然感到不确定。

  • 我可以做一些像meta={'x': int 'y': float, 'z': float}而不是meta={'x': 'i8', 'y': 'f8', 'z': 'f8'}
  • 有人可以提示我一个像'i8'这样的可能值列表吗? 存在什么类型?
  • 如何指定包含任意对象的列? 如何指定仅包含一个类的实例的列?

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

此集合中不包含日期时间格式(例如datetime64 ),可在pandasnumpy文档中找到其他信息。

dask数据帧的元参数通常需要一个空的pandas数据帧,其中包含列,索引和dtypes的定义。

构建这样一个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,但是,我不知道如何为每个列提供它们。 如您所见,不仅可以提供数据类型的“名称”,还可以提供实际的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 dtypes。 特别是,你可以传递给np.dtype的任何东西。 这包括以下内容:

  1. NumPy np.float64对象,如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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM