#pandas
Вопрос:
У меня есть следующая проблема. У меня есть два набора данных:
TableA = pd.DataFrame({'c': ['A', 'A', 'B', 'C', 'C'], 'views': [10, 10, 20, 25, 25] }) TableB = pd.DataFrame({'c': ['A', 'A', 'B', 'B']})
Я хотел бы знать, сколько % просмотров из таблицы A представлено в таблице B. В этом случае результат будет 30/55, потому что A и B представлены в таблице (просмотров 10 20), а общая сумма очков в каждой категории составляет 55 (10 20 25).
Есть ли какой-нибудь элегантный способ сделать это в панд? Я не хочу «отбрасывать дубликаты» в обеих таблицах, а затем использовать некоторые «антисоединения».
Ответ №1:
Вы можете сделать drop_duplicates
s = TableA.drop_duplicates('c') s.loc[s.c.isin(TableB.c),'views'].sum()/s.views.sum() Out[51]: 0.5454545454545454