【问题标题】:How to apply multiple criteria on a parsed csv chunk to get multiple outputs?如何在解析的 csv 块上应用多个标准以获得多个输出?
【发布时间】:2020-02-24 16:59:28
【问题描述】:

新手 dask ,任何帮助表示赞赏! 基本上,我从 540 个 csv 文件中读取 csv 文件(超出 RAM),并且每次我读取 csv 时,我都会应用 2 个过滤条件来获取 2 个输出文件,尽管 dask 正在完成它的工作,但同一块需要两倍的时间。我怎样才能为此编写有效的代码。

pricing_data = dd.read_csv(os.path.join('Selection Tool', 'prc_data','original','*.csv'),dtype={'BENCHMARK YIELD': 'object',
       'BID YIELD': 'object','SPREAD': 'object'},parse_dates=['PRICING DATE'],assume_missing=True,low_memory=False)

pricing_data['Running_Month_ISIN'] = pricing_data['PRICING DATE'].apply(lambda x: x.strftime('%m%Y'), meta=('PRICING DATE', 'object')) + pricing_data['ISIN']
pricing_data['ISIN_PRICING_DATE'] = pricing_data['ISIN'] + pricing_data['PRICING DATE'].dt.strftime('%Y%m%d').astype(str)  # master pricing data 
pricing_data['PRICING_DATE_ISIN'] = pricing_data['PRICING DATE'].dt.strftime('%Y%m%d').astype(str) + pricing_data['ISIN'] 
prc_output2 = pricing_data[pricing_data.PRICING_DATE_ISIN.isin(matching_list_2)].compute()
prc_output1 = pricing_data[pricing_data.Running_Month_ISIN.isin(matching_list_1)].compute()

【问题讨论】:

    标签: dask


    【解决方案1】:

    来自the documentation

    在单个 dask.compute() 调用中通过共享计算计算相关结果

    这允许 Dask 只计算一次计算的共享部分(如上面的 dd.read_csv 调用),而不是每次计算调用一次。

    所以在你的情况下:

    dask_prc_output2 = pricing_data[pricing_data.PRICING_DATE_ISIN.isin(matching_list_2)]
    dask_prc_output1 = pricing_data[pricing_data.Running_Month_ISIN.isin(matching_list_1)]
    prc_output1, prc_output2 = dask.compute(dask_prc_output1, dask_prc_output2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 2010-10-14
      • 2017-12-18
      • 1970-01-01
      相关资源
      最近更新 更多