A pandas dataframe has 2 columns.
Number | Character |
---|---|
111 | a |
111 | a |
111 | b |
111 | b |
111 | c |
222 | b |
222 | a |
222 | c |
222 | b |
222 | a |
222 | c |
333 | c |
333 | a |
333 | a |
333 | b |
333 | c |
333 | c |
first filter only first values by GroupBy.transform
and GroupBy.first
comparing by original values in boolean indexing
and then count values by GroupBy.size
:
df = df[df.groupby('Number')['Character'].transform('first').eq(df['Character'])]
df = df.groupby(['Number','Character']).size().reset_index(name='count')
print (df)
Number Character count
0 111 a 2
1 222 b 2
2 333 c 3