ドキュメントは良い例を示しています メタデータを提供する方法 。ただし、データフレームに適切なdtypeを選択することに関しては、まだ確信が持てません。
meta={'x': int 'y': float, 'z': float}
の代わりに meta={'x': 'i8', 'y': 'f8', 'z': 'f8'}
?利用可能な基本的なデータ型は、numpyを通じて提供されるものです。リストについては documentation をご覧ください。
このセットに含まれていないのは日時形式です(例:datetime64
)。追加情報は pandas および numpy のドキュメントに記載されています。
Daskデータフレームのメタ引数は、通常、列、インデックス、およびdtypeの定義を保持する空のpandasデータフレームを期待します。
このようなDataFrameを構築する1つの方法は次のとおりです。
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も提供します。
あなたの最後の質問に関して、あなたが探しているデータ型は「オブジェクト」です。例えば:
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 に渡すことができるものの中には、次のものが含まれます。
np.float64
などのNumPy dtypeオブジェクトfloat
などのPythonタイプオブジェクト'f8'
などのNumPy dtype文字列以下は、NumPyドキュメントから抜粋したより広範なリストです。 http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html#specifying-and-constructing-data-types