DASK FROM_ARRAY将类型转换为对象

2022-04-14 00:00:00 python numpy pandas dask

问题描述

我有以下代码,可以从一个数组创建一个DaskDataFrame。问题是所有类型都被转换为Object。我试图指定元数据,但找不到方法。如何在FROM_ARRAY中指定META?

b = np.array([(1.5, 2, 3, datetime(2000,1,1)), (4, 5, 6, datetime(2001, 2, 2))])
ddf = dd.from_array(b, columns=['col1', 'col2', 'col3', 'date1'], meta=['float', 'float', 'float', 'datetime'])

此操作引发AttributeError: 'list' object has no attribute '_constructor'


解决方案

您可以将NumPy数组指定为结构化数组:

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

b = np.array([(1.5, 2, 3, np.datetime64(datetime(2000,1,1))), (4, 5, 6, np.datetime64(datetime(2001, 2, 2)))], dtype=([('col1','float32'),('col2','float32'), ('col3','float32'), ('date1','<M8[us]') ]))
ddf = dd.from_array(b, columns=['col1', 'col2', 'col3', 'date1'])

ddf.head()

相关文章