Рассчитать точность и вызвать на основе значений в двух столбцах кадра данных 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))]
из которого вы можете рассчитать точность и вспомнить.
Но имейте в виду, что ваш пример не учитывает порядок элементов в ожидаемых выходных и фактических выходных списках, и это решение не будет работать, если это важно, а также, если в "Ожидаемом выходе" есть дубликаты любых значений. список.