Рассчитать точность и вызвать на основе значений в двух столбцах кадра данных Python Pandas?

У меня есть датафрейм в следующем формате:

Column 1 (Expected Output) | Column 2 (Actual Output)
[2,10,5,266,8]             |   [7,2,9,266]             
[4,89,34,453]              |   [4,22,34,453]

Я хотел бы найти количество элементов в фактическом входе, которые ожидались. Например, для строки 1 только 2 и 266 были как в ожидаемом, так и в фактическом выводе, что означает, что точность = 2/5 и возврат = 2/5.

Поскольку у меня более 500 строк, я хотел бы найти какую-то формулу, чтобы найти точность и вызвать для каждой строки.

1 ответ

Настройка вашего df так:

df = pd.DataFrame({"Col1": [[2,10,5,266,8],[4,89,34,453]],
                   "Col2":[[7,2,9,266],[4,22,34,453]]})

Вы можете найти соответствующие значения с помощью:

df["matches"] = [set(df.loc[r, "Col1"]) & set(df.loc[r, "Col2"]) for r in range(len(df))]

из которого вы можете рассчитать точность и вспомнить.

Но имейте в виду, что ваш пример не учитывает порядок элементов в ожидаемых выходных и фактических выходных списках, и это решение не будет работать, если это важно, а также, если в "Ожидаемом выходе" есть дубликаты любых значений. список.

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