У меня есть фрейм данных со столбцом в виде значений, разделенных запятыми, с кавычками ie., Строковый объект. Пример:
df['a']
'1,2,3,4,5'
'2,3,4,5,6'
Я могу преобразовать список значений в формате строки в массив NumPy и могу успешно выполнить свою операцию.
def func(x):
return something
for t_df in pd.read_csv("testset.csv",chunksize=2000):
t_df['predicted'] = t_df['prev'].parallel_apply(lambda x : arima(ast.literal_eval(x),1))
До сих пор у меня нет ' т любой вопрос. Но fun c работает с моделями прогнозирования, что требует довольно много времени, а размер кадра данных составляет 2 миллиона записей.
Итак, я попробовал пакет cudf в python для использования функциональности графического процессора. на Pandas как кадры данных. Здесь возникает проблема
for t_df in pd.read_csv("testset.csv",chunksize=2):
t_df['prev'] = t_df['prev'].apply(lambda x : np.array(ast.literal_eval(x)))
t_df = cudf.DataFrame.from_pandas(t_df)
Когда я применяю ту же операцию, происходит сбой с ошибкой, которая в основном не может преобразовать строковый объект в массив NumPy. Ошибка выглядит следующим образом
> ---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-19-e7866d751352> in <module>
12 t_df['prev'] = t_df['prev'].apply(lambda x : np.array(ast.literal_eval(x)))
13 st = time.time()
---> 14 t_df = cudf.DataFrame.from_pandas(t_df)
15 t_df['predicted'] = 10
16 res.append(t_df)
/opt/conda/lib/python3.7/site-packages/cudf/core/dataframe.py in from_pandas(cls, dataframe, nan_as_null)
3109 # columns for a single key
3110 if len(vals.shape) == 1:
-> 3111 df[i] = Series(vals, nan_as_null=nan_as_null)
3112 else:
3113 vals = vals.T
/opt/conda/lib/python3.7/site-packages/cudf/core/series.py in __init__(self, data, index, name, nan_as_null, dtype)
128
129 if not isinstance(data, column.ColumnBase):
--> 130 data = column.as_column(data, nan_as_null=nan_as_null, dtype=dtype)
131
132 if index is not None and not isinstance(index, Index):
/opt/conda/lib/python3.7/site-packages/cudf/core/column/column.py in as_column(arbitrary, nan_as_null, dtype, length)
1353 elif arb_dtype.kind in ("O", "U"):
1354 data = as_column(
-> 1355 pa.Array.from_pandas(arbitrary), dtype=arbitrary.dtype
1356 )
1357 else:
/opt/conda/lib/python3.7/site-packages/cudf/core/column/column.py in as_column(arbitrary, nan_as_null, dtype, length)
1265 mask=pamask,
1266 size=pa_size,
-> 1267 offset=pa_offset,
1268 )
1269
/opt/conda/lib/python3.7/site-packages/cudf/core/column/numerical.py in __init__(self, data, dtype, mask, size, offset)
30 dtype = np.dtype(dtype)
31 if data.size % dtype.itemsize:
---> 32 raise ValueError("Buffer size must be divisible by element size")
33 if size is None:
34 size = data.size // dtype.itemsize
ValueError: Buffer size must be divisible by element size
Какое может быть возможное решение?