Во-первых, при чтении файла csv с pd.read_csv
читать Prediction
столбец как предварительно определенный dtype
(в случае этого примера это np.int32
), чтобы сделать его более эффективным.
Затем запустите следующий код:
# Parse Id column string values as integer pairs of output array indices.
indices = np.empty((len(df), 2), np.int32)
for i, id_string in enumerate(df.Id):
id_parts = id_string.split('_')
indices[i, :] = int(id_parts[0][1:]), int(id_parts[1][1:])
# Infer shape of output array (OPTIONAL: used if output shape is not given).
n, m = np.max(indices, axis=0) + 1
# Create predictions output array with the same dtype.
out = np.zeros((n, m), df.dtypes.Prediction)
# Assign Prediction column values.
out[indices[:, 0], indices[:, 1]] = df.Prediction
Небольшие тестовые данные:
Id Prediction
0 r0_c2 5
1 r1_c1 8
2 r2_c0 7
Вывод (без указания формы вывода (n, m)
):
[[0 0 5]
[0 8 0]
[7 0 0]]
I ' Мы также рассчитали время, используя функцию %%timeit
при запуске 900000 строк данных с формой вывода (1000, 1000)
, и вот результаты:
1 l oop, лучшее из 3: 1,61 с на л oop
Надеюсь, это ответит на ваш вопрос, удачи!