从数组创建 dask 数据框不保留列类型

Creating dask dataframe from array doesn't keep column types

我正在尝试从 numpy 数组创建一个 dask 数据框。为此,我需要指定列类型。正如 dask 文档中所建议的,我为此使用了一个 pandas 空数据框。这不会引发错误,但是所有数据类型都创建为 object。我需要使用空的 Pandas 数据框,如何实现?

import pandas as pd
import dask.dataframe as dd

array = np.array([(1.5, 2, 3, datetime(2000,1,1)), (4, 5, 6, datetime(2001, 2, 2))])
meta = pd.DataFrame({'col1': pd.Series(dtype='float64'),
                   'col2': pd.Series(dtype='float64'),
                   'col3': pd.Series(dtype='float64'),
                   'date1': pd.Series(dtype='datetime64[ns]')})
print(meta.dtypes)

>>> col1            float64
>>> col2            float64
>>> col3            float64
>>> date1    datetime64[ns]
>>> dtype: object

columns = ['col1', 'col2', 'col3', 'date1']
ddf = dd.from_array(array, columns=columns, meta=meta)
ddf.compute()

print(ddf.dtypes)

>>> col1     object
>>> col2     object
>>> col3     object
>>> date1    object
>>> dtype: object

这个有用吗-

df = (pd.DataFrame(array, columns = ["col1", "col2", "col3", "col4"])
      .astype({"col1": "float64", 
               "col2": "float64", 
               "col3": "float64", 
               "col4": "datetime64[ns]"}))
ddf = dd.from_pandas(df, npartitions=10)

ddf.dtypes 的输出为我提供了正确的数据类型。

数据框创建后可以设置数据类型吗?

import pandas as pd
import numpy as np
from datetime import datetime
import dask.dataframe as dd

array = np.array([(1.5, 2, 3, datetime(2000,1,1)), (4, 5, 6, datetime(2001, 2, 2))])

columns = ['col1', 'col2', 'col3', 'date1']
ddf = dd.from_array(array, columns = columns)
ddf.compute()

ddf = ddf.astype({'col1': 'float64','col2':'float64','col3':'float64','date1':'datetime64[ns]'})
print(ddf.dtypes)