如何为dask.datafram指定元数据

2024-05-18 20:54:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Tags: 数据文档befloat事情canmeta例子
2条回答

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

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

dask dataframes的元参数通常需要一个空的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,但是,我不确定如何为每个单独的列提供它们。如您所见,不仅可以为数据类型提供“名称”,还可以提供实际的numpy数据类型。

关于最后一个问题,您要查找的数据类型是“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

相关问题 更多 >

    热门问题