簡體   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