从数组创建 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)
我正在尝试从 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)