如何在解析的csv块上应用多个条件以获取多个输出?

问题描述 投票:0回答:1

不太熟悉,不胜感激!基本上我从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个回答
0
投票

在单个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)

© www.soinside.com 2019 - 2024. All rights reserved.