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
我正在尝试将大量 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