Я новичок в cuDF и, возможно, не понял цели конструкции, так что это очень общий вопрос c, который у меня есть. У меня есть набор данных, который в основном содержит строковые столбцы, и я надеялся использовать apply_rows для выполнения обработки строк, однако я понял, что это может работать только с данными цифр c.
Вот пример которые я цитировал на большинстве сайтов:
import cudf
import numpy as np
df = cudf.DataFrame()
nelem = 3
df['col1'] = np.arange(nelem)
df['col2'] = np.arange(nelem)
df['col3'] = np.arange(nelem)
# Define input columns for the kernel
col1 = df['col1']
col2 = df['col2']
col3 = df['col3']
def kernel(col1, col2, col3, out1, out2, kwarg1, kwarg2):
for i, (x, y, z) in enumerate(zip(col1, col2, col3)):
out1[i] = kwarg2 * x - kwarg1 * y
out2[i] = y - kwarg1 * z
df.apply_rows(kernel,
incols=['col1', 'col2', 'col3'],
outcols=dict(out1=np.float64),
kwargs=dict(kwarg1=3, kwarg2=4))
Если я изменяю это на
import cudf
import numpy as np
df = cudf.DataFrame()
nelem = 3
df['col1'] = np.arange(nelem)
df['col2'] = np.arange(nelem)
df['col3'] = ['a','a','a'] # <<- change to string
# Define input columns for the kernel
col1 = df['col1']
col2 = df['col2']
col3 = df['col3']
def kernel(col1, col2, col3, out1, out2, kwarg1, kwarg2):
for i, (x, y, z) in enumerate(zip(col1, col2, col3)):
out1[i] = kwarg2 * x - kwarg1 * y
out2[i] = y - kwarg1 * z
Он сообщает об ошибке, подобной AttributeError: у объекта 'nvstrings' нет атрибута 'to_gpu_array' .
Это предназначено для работы только с числовыми значениями? Я предполагаю, что это предназначено для работы с матричным типом операций, поэтому это ограничение. Может ли кто-нибудь представить некоторые идеи здесь?