У меня есть df
:
Date Symbol Person
0 2019 Q3 A Bob
1 2019 Q3 A Jon
2 2019 Q3 B Rob
3 2019 Q3 B Ron
4 2019 Q3 C Jay
5 2019 Q3 C Ray
6 2019 Q3 D Fay
7 2019 Q2 A Bob
8 2019 Q2 A Jon
9 2019 Q2 B Rob
10 2019 Q2 B Ron
11 2019 Q2 C Jay
12 2019 Q2 C Ray
13 2019 Q2 D Fay
14 2019 Q2 D Bre
15 2019 Q2 E Jon
16 2019 Q2 F Ron
, где я пытаюсь найти два верхних Symbols
за квартал по количеству. Но, как вы можете видеть, иногда существует более двух Symbols
с одинаковым значением счетчика для данного Date
(например, символы A
, B
, и C
в 2019 Q3
и символы A
, B
, C
и D
в 2019 Q2
.
Когда я сделаю:
df['Count'] = df.groupby(['Date', 'Symbol'])['Person'].transform('nunique')
df = df[['Date', 'Symbol', 'Count']]
df.drop_duplicates(subset=None, keep="first", inplace=True)
df = df.sort_values('Count', ascending=False).groupby('Date').head(2).sort_index()
Мой вывод включает только первые два:
Date Symbol Count
2019 Q3 A 2
2019 Q3 B 2
2019 Q2 A 2
2019 Q2 B 2
Но как я могу получить его так, чтобы все связанные counts
экземпляры тоже были включены, чтобы он выглядел так:
Date Symbol Count
2019 Q3 A 2
2019 Q3 B 2
2019 Q3 C 2
2019 Q2 A 2
2019 Q2 B 2
2019 Q2 C 2
2019 Q2 D 2