Как получить пропорцию двух панд df

#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