Dask - 查询时长度不匹配

Dask - length mismatch when querying

我正在尝试将大量 csv 导入到单个数据框中,并希望在特定日期后过滤数据。

它抛出以下错误,不知道出了什么问题。

是否因为列不匹配?如果是,是否有一种方法可以读取所有 csv 并以数据框具有所有列名并且不显示以下错误的方式执行联合。

import dask.dataframe as dd
df = dd.read_csv('XXXXXXX*.csv',assume_missing=True)
df['time'] = df['time'].map(lambda x: pd.to_datetime(x, errors='coerce'))
filter_t=df_req[df_req['time']>='2020-11-21 21:22:19']
filter_t.head(npartitions=-1)

问题不清楚,但如果列不匹配,则使用 dd.read_csv 不合适。一种选择是编写自定义延迟包装器以强制执行特定的列结构。这大致是这样的:

# this is the list of columns that the final dataframe should contain
list_all_columns = ['a', 'b', 'c'] 

from dask import delayed
@delayed
def load_csv(f):
    df = pd.read_csv(f)
    for c in list_all_columns:
        if c not in df.columns:
             df[c] = np.nan
    return df

ddf = dd.from_delayed([load_csv(f) for f in glob('x*csv')])

# the rest of your workflow continues