相关疑难解决方法(0)

Python PANDAS:从pandas/numpy转换为dask dataframe/array

我正在努力尝试将程序转换为可并行化/多线程与优秀的dask库.这是我正在进行转换的程序:

Python PANDAS:按枚举日期堆叠以创建矢量化记录

import pandas as pd
import numpy as np
import dask.dataframe as dd
import dask.array as da
from io import StringIO

test_data = '''id,transaction_dt,units,measures
               1,2018-01-01,4,30.5
               1,2018-01-03,4,26.3
               2,2018-01-01,3,12.7
               2,2018-01-03,3,8.8'''

df_test = pd.read_csv(StringIO(test_data), sep=',')
df_test['transaction_dt'] = pd.to_datetime(df_test['transaction_dt'])

df_test = df_test.loc[np.repeat(df_test.index, df_test['units'])]
df_test['transaction_dt'] += pd.to_timedelta(df_test.groupby(level=0).cumcount(), unit='d')
df_test = df_test.reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)

预期成绩:

id,transaction_dt,measures
1,2018-01-01,30.5
1,2018-01-02,30.5
1,2018-01-03,30.5
1,2018-01-04,30.5
1,2018-01-03,26.3
1,2018-01-04,26.3
1,2018-01-05,26.3
1,2018-01-06,26.3
2,2018-01-01,12.7
2,2018-01-02,12.7
2,2018-01-03,12.7
2,2018-01-03,8.8
2,2018-01-04,8.8
2,2018-01-05,8.8 
Run Code Online (Sandbox Code Playgroud)

在我看来,这可能是尝试并行化的一个很好的候选者,因为单独的dask分区不需要知道彼此之间的任何事情来完成所需的操作.这是我认为它可能如何工作的天真表示:

dd_test = dd.from_pandas(df_test, npartitions=3)

dd_test = dd_test.loc[da.repeat(dd_test.index, dd_test['units'])]
dd_test['transaction_dt'] += dd_test.to_timedelta(dd.groupby(level=0).cumcount(), unit='d')
dd_test = dd_test.reset_index(drop=True) …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas dask

6
推荐指数
1
解决办法
1686
查看次数

标签 统计

dask ×1

numpy ×1

pandas ×1

python ×1