Есть ли у Pandas аналогичный способ выполнения суммы исключения?

В Excel, когда я хочу суммировать значения по таблице, я могу выполнить суммирование, если условие исключено на основе имени переменной. Есть ли у Pandas аналогичная функция?

Чтобы дать больше контекста, я смотрю на матрицу путаницы и определяю процент правильных и неправильных классификаций.

Пример Excel:

        Fantasy  Horror  RPG
Fantasy   25      3       1
Horror    1       13      0
RPG       11      1       7

 ==(sum(B2:B4) - SUMIF($A2:$A4,"<>"&B$1,B2:B4))/sum(B2:B4)

Полученные результаты:

       0.68    0.76    0.88

Я знаю о функции groupby, но, насколько я понимаю, она группируется на основе категориальных переменных, а не путем исключения, как это можно сделать с sumif.

Пример:

import pandas as pd


my_data: pd.DataFrame = pd.read_excel("c:/mydata.xlsx")
mydata.groupby("genre").count()

Не предоставляйте формулы Excel (например:sum(B2:B4)), лучше объяснить свою логику в тексте (например:25+1+11). Кроме того, четко предоставьте желаемый результат.

Panda Kim 15.07.2024 05:35
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пример кода

import pandas as pd
idx = ['Fantasy', 'Horror', 'RPG']
df = pd.DataFrame([[25,  3,  1], [ 1, 13,  0], [11,  1,  7]], index=idx, columns=idx)

дф:

         Fantasy  Horror  RPG
Fantasy       25       3    1
Horror         1      13    0
RPG           11       1    7

Код

tmp = df.unstack()
cond = tmp.index.get_level_values(0) == tmp.index.get_level_values(1)
out = tmp[cond].droplevel(1).div(tmp.groupby(level=0).sum())

вне

Fantasy    0.675676
Horror     0.764706
RPG        0.875000
dtype: float64

Если значения представляют собой квадратную матрицу, поскольку индекс и столбцы имеют одинаковый порядок и одинаковый размер, используйте следующий код

df1 = df.copy()
np.fill_diagonal(df1.values, 0)
out = df1.sum().div(df.sum()).rsub(1)

тот же результат, но быстрее

Другие вопросы по теме