Я пытаюсь создать матрицу результатов функции, которая включает в себя кросс-таблицу столбцов данных.Функция работает с парой столбцов данных по очереди, поэтому конечный результат представляет собой матрицу результатов, примененных к каждой паре.Индексы столбцов столбцов, над которыми я хочу работать pd.crosstab
, находятся в списке, cols_index
.Вот мой код:
cols_index # list of dataframe column indices. All fine.
res_matrix = np.zeros([len(cols_index),len(cols_index)]) # square matrix of zeros, each dimension is the length of the number of columns
for i in cols_index:
for j in cols_index:
confusion_matrix = pd.crosstab(df.columns.get_values()[i], df.columns.get_values()[j]) # df.columns.get_values()[location]
result = my_function(confusion_matrix) # a scalar
res_matrix[i, j] = result
return res_matrix
Однако я получаю следующую ошибку: ValueError: If using all scalar values, you must pass an index
Нет проблем с my_function, потому что, если я запускаю my_function
в двух столбцах кадра данных, нетПроблема:
confusion_matrix = pd.crosstab(df['colA'], df['colB'])
result = my_function(confusion_matrix) # returns 0.29999 which is fine
Я пробовал различные способы исправить это, в том числе, глядя на этот пост: Как заполнить матрицу в Python, используя итерации по строкам и столбцам
но в этом случае я не вижу, как использовать трансляцию через колонки Панд.
Любые идеи приветствуются, спасибо.