I am having a little problem with producing statistics for my dataframe in pandas. My dataframe looks like this (I omit the index):
id type 1 A 2 B 3 A 1 B 3 B 2 C 4 B 4 C
What is important, each
id has two
type values assigned, as can be seen from the example above. I want to count all
type combinations occurrences (so count number of unique
id with given
type combination), so I want to get such a dataframe:
type count A, B 2 A, C 0 B, C 2
I tried using
groupby in many ways, but in vain. I can do this kind of 'count' using
for-loop and a number of lines of code, but I believe there has to be elegant and proper (in python terms) solution to this problem.
Thanks in advance for any hints.
from itertools import combinations def combs(types): return pd.Series(list(combinations(sorted(types), 2))) res = df.groupby('id')['type'].apply(combs).value_counts() print(res) (A, B) 2 (B, C) 2 Name: type, dtype: int64