文档提供了很好的示例,how metadata can be provided。但是,当我为数据帧选择正确的dtypes时,我仍然感到不确定。
meta={'x': int 'y': float,
'z': float}
而不是meta={'x': 'i8', 'y': 'f8', 'z': 'f8'}
吗?答案 0 :(得分:5)
可用的基本数据类型是通过numpy提供的类型。请查看documentation以获取列表。
此套装中未包含日期时间格式(例如datetime64
),可在pandas和numpy文档中找到其他信息。
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>
答案 1 :(得分:2)
Dask.dataframe和Pandas都使用NumPy dtypes。特别是,你可以传递给np.dtype的任何东西。这包括以下内容:
np.float64
float
'f8'
以下是来自NumPy文档的更广泛的列表:http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html#specifying-and-constructing-data-types