У меня проблемы с решением следующей проблемы:
У меня есть pandas DataFrame, похожий на:
col1 col2 col3
A P S
A C W
A C W
A C M
B P S
B C M
B C M
D P W
D C M
D C S
, и мне нужно ответить на следующее:
В той же группе (из col1
), сколько C
(в col2
) составляют W
(из col3
) и имеют P
(в col2
), что составляет S
(с col3
)? После этого мне нужно суммировать все подсчеты, сделанные для каждой группы в целом.
Пишем более схематично, сколько пар C-W
входит в одну группу col1
, в которой есть пара P-S
? Затем сложите все числа вместе.
До сих пор я пытался решить эту проблему следующим образом:
pd_h = pd_h\
.groupby(["col1", "col2", "col3"])\
.filter(
lambda x: ((x["col2"].iloc[0] == 'C') & (x["col3"].iloc[0] == "W")
if ((x["col2"].iloc[0] == 'P') & (x["col3"].iloc[0] == "S")) else False)
).describe(["count"]) # here describe, because I may decide to put also "mean", "std", etc.
Но остальные пары C-W
могут принадлежать группе, в которой пары нет P-S
.
Как мне решить эту проблему?
Заранее спасибо!