У меня есть Dataframe общей информации среди пользователей, состоящий из:
user class
A X
B Y
C Z
D Y
E Y
F X
и другой Dataframe их деятельности, состоящий из:
fing fer
A B
A E
B D
B C
B F
C A
D E
E B
F D
Вопрос:
Сколько пользователей, которые имеют определенный класс, fer
других пользователей, которые имеют другой класс?
Например, если возникает вопрос: сколько пользователей класса X
являются fer
пользователями класса Y
, результат должен быть: 3
, потому что есть только A, F
, которые имеют класс X
и их отношения:
find fer
A B
A E
F D
Я пытался сейчас следующее:
fing_table = pd_ci.merge(pd_f, how="right", left_on="user", right_on="fing")
fing_table.dropna(inplace=True)
fer_table = pd_ci.merge(pd_f, how="right", left_on="user", right_on="fer")
fer_table.dropna(inplace=True)
fs = fing_table.merge(fer_table, how="right", left_on="fing", right_on="fer").drop_duplicates(keep="first")
res = fs[fs["class"] == category_to and fs["class"] == category_from]
return res["user_x"].count()
Но происходит сбой, потому что, поскольку это Series
, ему потребуется либо a.any()
, либо a.all()
et c. внутри and
-условия res
.
Как избежать использования явного выражения для, как я могу решить эту проблему?
Спасибо!