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

标签 python pandas numpy dask

我正在尝试从 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

最佳答案

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

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)

关于python - 从数组创建 dask 数据框不保留列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70847533/

相关文章:

python - Pandas 升级版

python - 如何有效地将 numpy ndarray 转换为元组列表?

python - 优雅的 numpy 数组移位和 NaN 填充?

linux - Numpy 需要 ucs2

python - 如何在 matplotlib 图例中添加一个字符串作为艺术家?

python - 在 python 中转换框架 pandas

python - 不和谐.py |为特定用户添加角色

python - Pandas df.describe() - 如何将值提取到 Dataframe 中?

python - 列表索引越界和堆栈溢出错误

pandas - 行之间的差异作为列内的列表