我有这样一个恼人的情况,我的一些拼花文件有:
x: int64
和其他
x: int64 not null
和ergo(在dask 2.8.0/numpy 1.15.1/pandas 0.25.3)我不能运行以下命令:
test: Union[pd.Series, pd.DataFrame, np.ndarray] = dd.read_parquet(input_path).query(filter_string)[input_columns].compute()
有人知道我可以做什么,没有升级dask/numpy(因为我知道最新的dask/numpy似乎工作)?
提前感谢!
如果您知道哪些文件包含不同的dtype,那么最好重新处理它们(加载/转换dtype/保存)。
如果这不是一个选项,那么你可以从延迟对象创建一个任务数据帧,像这样:
import pandas as pd
from dask import delayed
import dask.dataframe as dd
@delayed
def custom_load(fpath):
df = pd.read_parquet(fpath)
df = df.astype({'x': 'Int64'}) # the appropriate dtype
return df
delayed = [custom_load(f) for f in files] # where files is the list of files
ddf = dd.from_delayed(delayed) # can also provide meta option if known